渗透测试TIPS之Web(一) 原创: 帅气的Jumbo 中国白客联盟 2018/8/8
Contents
侦查
1、绘制攻击面;
2、寻找子域名、ip、电子邮件,harvester是个不错的工具,可以使用如
python theHarvester.py -d chinabaiker.com -n -c -t -b google
查找相关信息;
3、一个不错的OSINT工具框架网址:http://osintframework.com/
4、查找其对应的服务、banner信息和版本信息,然后根据信息去搜寻对应的cve漏洞信息和去exploit-db上查找公开的exp信息;
5、通过https://web-beta.archive.org/搜索历史网页;
6、检查robots.txt、crossdomain.xml和clientaccesspolicy.xml;
7、查找host信息命令:
$ dig chinabaiker.com a; @8.8.8.8 # types: a, mx, ns, soa, srv, txt, axfr
$ dig -x chinabaiker.com # reverse lookup
8、在谷歌上利用site:chinabaiker.com命令查找相关的信息泄漏;
9、利用https://wappalyzer.com/查找如中间件、语言、后端和服务等相关信息;
10、寻找隐藏的文件夹,如使用
https://c.darenet.org/nitemare/SecLists/tree/master/Discovery/Web_Content
里面的字典进行fuzz
$ dirb http://www.chinabaiker.com wordlists/dirb/common.txt
$ nikto -host http://www.chinabaiker.com
11、利用自动化和主动式爬取应用程序的所有功能,发现隐藏内容;
12、确定入口点、技术点、确定该应用程序是做什么的、如何做到的、绘制攻击面、有哪些危险功能、框架版本其相关版本的cve漏洞信息等;
13、阅读web应用程序的客户端代码,包括它使用的是什么javascript库;
14、检查所有页面中的评论;
15、一些错误页面容易受到xss攻击;
16、观察所有参数,记录哪些参数用户get和post,看看是否能够把post转换成get;
17、观察cookie信息,包括添加、设置、删除等
18、定位header头信息
$ ./whatweb www.chinabaiker.com # identifies all known services
$ dirb https://www.chinabaiker.com /usr/share/wordlists/dirb/common.txt # bruteforce
19、使用Shodan查找类似的应用程序、端点、SSH哈希密钥;
20、查找网站之前的历史漏洞。Recon-ng是个不错的工具
use recon/domains-vulnerabilities/xssposed; set source chinabaiker.com; run
21、RTFM – 在应用程序上添加DEBUG=TRUE测试是否有开发模式,是否能发现一些敏感信息;
22、测试api是否有未授权访问;
23、以攻击者的角度看待应用程序,发现应用程序最有价值的地方,比如有的时候绕过用户付费比xss跨站漏洞更有价值;
24、测试是否有逻辑漏洞;
25、如果在进行一个赏金任务,记得看下是否有新业务上线,包括一些新的代码、新的app、新的ui等;
测试输入输出
1、测试相关文件是否有备份文件,如.old、.bak
2、利用burp、nikto和dirb对web应用程序进行自动化扫描;
3、利用wpscan来对wordpress网站包括插件进行扫描攻击
4、利用cmsmap来寻找durpal和joomla的相关漏洞;
5、利用flashbang解码swf文件;
6、根据反射参数测试相关漏洞:xss、hpp、link manipulation、template injection
7、测试服务器问题(基于错误、布尔、outband、数字、单引号、双引号、),如sql注入、服务端包含、命令执行、路径遍历、 本地和远程文件包含、smtp注入、soap注入、xxe、ldap注入、xpath注入、代码之星、反序列化等;
8、如果参数里带有类似file参数,可以尝试目录遍历、文件包含等漏洞;
9、如果参数里带有类似url参数,可以尝试url跳转、ssrf等漏洞;
10、当应用程序解析xml、json时,可以测试注入、ssrf、xpath、xxe等漏洞;
11、如果参数进行如base64编码,测试攻击时也需要进行相应的编码;
12、查找基于dom的攻击,如重定向、xss等漏洞;
13、测试文件上传漏洞时,可以上传svg,利用svg来达到ssrf、xxe等漏洞;
14、在上传头像时,可以上传svg来进行恶意攻击;
服务端问题
1、http和https请求之间尝试相互转换;
2、尝试头部注入;
3、测试http请求,尝试利用任意请求方法来绕过身份验证页面;
4、测试客户端的任何程序,如flash、acticex和silverlight;
5、在测试文件上传时,可以上传双扩展名(.php5.jpeg)和使用空字节(.php5%00.jpeg)
6、尝试测试csrf;
7、如果存在以root权限运行的二进制文件,则应仅使用https验证校验或使用公钥进行检查;
8、尝试验证码绕过;
9、尝试框架注入;
10、尝试缓存中毒;
11、寻找url参数中的敏感数据;
12、寻找各种敏感信息;
13、根据数字id进行如订单越权等;
14、多尝试测试swf;
15、测试ssh弱协议;
16、测试cors策略。如果cors策略或crossdomain.xml允许子域,则可以利用子域向主域发起xss等漏洞;
17、尝试绕过CSP;
18、验证http严格传输安全性(HSTS);
19、验证X-XSS-Protection;
20、验证X-Content-Type-Options;
21、验证http公钥固定;
测试认证
1、利用burp查看认证信息;
2、401爆破
$ nmap -d -vv -p 80 –script http-brute –script-args http-brute.path=/ www.chinabaiker.com
3、测试弱口令,如空密码、空用户名、123456
4、枚举用户名;
5、测试找回密码功能,测试smtp头注入;
6、测试remember me功能;
7、在账号中删除旧的邮箱地址,添加新的邮箱,测试旧的邮箱是否还能够进行密码找回;
8、尝试不输入密码的情况下进行敏感操作;
9、密码爆破时,虽然会提示锁定,但是很可能遇到正确密码以后还是能够登录;
10、在修改密码时,尝试进行对之前登录时会锁定的密码进行爆破;
11、测试电子邮件验证邮件是否通过http传输;
12、cookie是否添加httponly、secure属性;
13、测试oauth身份验证,确保在后端是由google或第三方生成的id令牌:
https://developers.google.com/identity/sign-in/web/backend-auth#verify-the-integrity-of-the-id-token
14、测试其他的访问控制方法:https://t.co/z84ajd7bmO
15、“记住我”的功能是否会过期,查看cookie中是否有能够利用的空间;
16、测试用户唯一性;
17、测试如账号密码是否直接在url中传输;
18、在用户名和密码字段中测试空字符(%00);
19、测试用户登录失效时间;
20、尝试在请求中添加cookie信息,有些应用会读取参数并将其设置为cookie;
21、设置新密码时尝试使用老密码;
测试会话管理
1、session是否具有随机性、超时时间、是否允许多个用户同时在线;
2、测试session的含义;
3、session生成是否是可预测的,可以利用brupsuite的sequencer进行辅助测试;
4、测试javascript能否访问token;
5、测试自定义令牌能否污染日志;
6、测试令牌和会话是否绑定,能否重复使用;
7、检查会话终止;
8、检查会话固定;
9、检查cookie能否劫持用户会话;
10、检查XSRF;
11、测试是否可以在其他网站的应用程序上下文中执行认证动作;
12、检查cookie是否限定在当前域,是否设置了httponly、secure属性;
13、测试访问控制功能;
14、利用多个用户测试控件有效性;
15、测试不安全的访问控制方法,如请求参数、referer头等;
16、持久性cookie;
17、Session tokens 强度;
18、授权测试;
测试业务逻辑
1、一般最后一步测试这些问题,因为这时我们已经得知应用程序一般都会在哪里出现问题;
2、识别逻辑攻击面;
3、确定应用程序是做什么的,最有价值的是什么,攻击者想要什么;
4、通过客户端测试数据传输;
5、测试pc应用和手机应用;
6、测试客户端输入验证;
7、应用程序是否尝试将逻辑基于客户端,比如表单是否具有可以使用浏览器编辑的最大长度客户端;
8、测试厚客户端组件(java、activex、flash);
9、应用程序是否使用Java,Flash,ActiveX或Silverlight之类的东西?下载applet并进行逆向工程;
10、测试业务逻辑,测试能否绕过付款;
缓存攻击
1、如果仅验证路径,则可以提交恶意headers来达到缓存错误的结果;
2、条件竞争,获取他人数据;
3、header头注入,注入新的响应,可能会缓存攻击者控制的恶意响应;
4、使用多个主机头或x-forwarded-host,可能会导致缓存加载攻击者的站点并为其提供服务;
5、dns缓存中毒:攻击者对缓存的dns服务器创建虚假响应,所有用户在TTL之前都会收到错误的响应;
6、侧通道攻击:利用噪声、热量、电磁波进行攻击;
7、脱机web应用程序缓存中毒:利用iframe缓存钓鱼网站;
其他
1、测试wordpress站点:
$ wpscan -url http://$ip/ -enumerate p
2、wordpress密码爆破
$ python patator.py http_fuzz url=http://$ip/wp-login.php raw_request=rawlogin 0=/usr/share/rockyou.txt -l /tmp/login &; tail -f /tmp/login | grep 302
3、判断指纹
$ ./clusterd.py –fingerprint -i $ip BlindElephant.py $ip
4、请求具有特定密码的站点
$ curl –ciphers ECDHE-RSA-AES256-SHA https://$ip
5、反混淆JS
JStillery, JSNice
OAuth2
1、测试服务器是否允许在没有任何密码的情况下对用户身份进行验证;
2、认证流程:
a.用户点击登录facebook
b.用户被重定向到facebook
http://facebook.com/oauth?redirect_uri=target.com%2fcallback&state=xyz
c.如果登录成功,url被重定向到target.com
d.浏览器发出包含状态值的请求
e.客户端应验证状态值以防止csrf
3、以上可能存在的问题
a.使用包含授权代码的重定向url让受害者访问
b.url跳转:redirect_uri设置为chinabaiker.com时,当用户被重定向时,攻击者能否读取授权码
c.访问令牌复用:攻击者利用受害者的令牌进行非授权访问
DNS重绑定
1、攻击者控制attacker.com的DNS服务器;
2、用户访问attacker.com;
3、NS响应attacker.com的A记录、ip地址等;
4、浏览器获取资源,如/secrets
5、DNS响应过期,现DNS服务器使用victim.com的IP进行响应;
6、浏览器将在attacker.com源中获取victim.com/secrets信息;
7、攻击者可以将CNAME条目返回给爆破的内部主机名;
跨域请求
1、浏览器将执行具有标准内容类型的GET请求和POST
2、否则,浏览器将执行OPTIONS请求并检查CORS头信息
原文链接:https://guif.re/webpentest
Leave a Reply