当前位置: 首页 > news >正文

怎样做像绿色和平组织类似的网站传奇网页游戏下载

怎样做像绿色和平组织类似的网站,传奇网页游戏下载,wordpress摘要 省略号,珠海网站制作推广公司近期在做个基础的 web 常见漏洞的 ppt,主要参考 OWASP TOP 10 2017RC2,此版本中增加了 XXE 攻击,所以自己简单的研究下 XXE 攻击。XXE(XML External Entity)XML 外部实体,当前端和后端通信数据采用 xml&…

近期在做个基础的 web 常见漏洞的 ppt,主要参考 OWASP TOP 10 2017RC2,此版本中增加了 XXE 攻击,所以自己简单的研究下 XXE 攻击。XXE(XML External Entity)XML 外部实体,当前端和后端通信数据采用 xml,可传入 xml 外部实体,利用后端 xml 解析器漏洞,使 xml 解析器去访问攻击者指定的资源。首先需要了解一些 xml 的基础知识。

1.xml 基础知识

        XML 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML 文档结构包括 XML 声明、DTD 文档类型定义(可选)、文档元素。

        XML 具有一些特性:

            (1).XML 是一种标记语言,很类似 HTML

            (2).XML 被设计用来传输和存储数据,而 HTML 被设计用来显示数据

            (3).XML 标签没有被预定义,需要用户自行定义标签

            (4).XML 具有自我描述性

        XML 的语法规则:

            (1).XML 必须有一个根元素

            (2).XML 必须有关闭标签

            (3).XML 标签对大小写敏感

            (4).XML 元素必须正确的嵌套

            (5).XML 属性值必须加引号

        XML DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。DTD 可以在 XML 文档内声明,也可以外部引用。

        (1)内部声明:<!DOCTYPE 根元素 [元素声明]>,例如 <!DOCTYPE note aaa>

        (2)外部声明:<!DOCTYPE 根元素 SYSTEM "文件名">,例如 <!DOCTYPE root SYSTEM "test.dtd">

    DTD 实体声明:

        (1)内部实体声明

            <!ENTITY 实体名称 “实体的值”>

            示例:

                <!DOCTYPE foo [

                <!ELEMENT foo ANY> <!-- 声明元素 -->

                <!ENTITY test "abcdefg"> <!-- 声明内部实体 -->

                <!ENTITY xxe "Thinking"> <!-- 声明内部实体 -->

                ]>

                <foo>&xxe;&test;</foo>

        (2)外部实体声明

                <!ENTITY 实体名称 SYSTEM “URI/URL”>

                外部实体声明支持的部分协议如下:

<!DOCTYPE foo [

        <!ELEMENT foo ANY >

         <!ENTITY  xxe SYSTEM "file:///c:/windows/win.ini"> <!-- 声明外部实体 -->

]>

<foo>&xxe;</foo>

(3)参数实体声明

            参数实体的引用只能在 DTD 中使用

            <!ENTITY % 实体名 “实体内容”>

            <!ENTITY % 实体名 SYSTEM “URI”>

            详情见:http://www.w3school.com.cn/dtd/index.asp

2.XXE 攻击

        xxe 主要利用 xml 解析器对外部实体的解析去触发攻击,从上面支持的协议列表可以看出,可利用 xxe 去进行命令执行、读取文件、内网探测端口、作为跳板机攻击内网机器等攻击,故危害巨大。

xxe 主要分为两种场景:有回显和无回显。有回显的场景中,可以直接查看到攻击执行的结果。无回显的场景下,只能通过其他手段查看攻击效果。这次主要实验了有回显的情况。

        自己编写个简单的登录场景,登录的参数使用 xml 传输,后端对接收的 xml 参数进行解析,并且返回登录情况。制作个登录,当点击 “登录” 按钮时,使用 ajax 传输 xml 格式的登录信息,

传输的数据格式为:<login><username > 用户名 </username><password > 密码 </password></login>

后端使用 dom4j 去解析传入的 xml 参数,为了实现有回显的效果,我们将传入的 username 回传给前端,并在前端显示出来。

@Controller
@RequestMapping(value="api")
public class XXEController {/*<login><username>aaa</username><password>adfasds</password></login>*/@ResponseBody@RequestMapping(value="loginXml.json"/*,method= RequestMethod.POST*/)public AjaxResponse testXXE(String xml){AjaxResponse ajaxResponse = new AjaxResponse();try {Document document = DocumentHelper.parseText(xml);Element rootEle = document.getRootElement();String username = rootEle.elementTextTrim("username");//String password = rootEle.elementTextTrim("password");ajaxResponse.setCode(210);ajaxResponse.setMsg("登录失败");ajaxResponse.setContent(username);}catch (Exception e){e.printStackTrace();ajaxResponse.setCode(211);ajaxResponse.setMsg("数据处理失败");}return ajaxResponse;}}

正常登陆时,传输的参数和回显效果如下:

xml=%3Clogin%3E%3Cusername%3Eadmin%3C%2Fusername%3E%3Cpassword%3Etest123%3C%2Fpassword%3E%3C%2Flogin%3E

使用 xxe 攻击时,攻击示例代码如下,此代码读取 c:/windows/win.ini 文件

<!DOCTYPE foo 
[<!ELEMENT foo ANY>
<!ENTITY abc SYSTEM "file:///c:/windows/win.ini">]>
<login><username>&abc;</username><password>fdsf</password></login>

修改参数和回显效果如下:

3. 防御措施    

        关于防御措施,第一种可以关闭 xml 解析器外部解析功能,第二种进行过滤,例如过滤掉!、DOCTYPE、SYSTEM、ENTITY 等关键字

        尝试下第二种方案,过滤关键字。后端代码如下,将部分关键字过滤掉。

@Controller
@RequestMapping(value="api")
public class XXEController {/*<login><username>aaa</username><password>adfasds</password></login>*/@ResponseBody@RequestMapping(value="loginXml.json"/*,method= RequestMethod.POST*/)public AjaxResponse testXXE(String xml){AjaxResponse ajaxResponse = new AjaxResponse();try {//过滤部分关键字,防止XXEString newXml = xml.replace("!","").replace("DOCTYPE","").replace("ELEMENT","").replace("ENTITY","");Document document = DocumentHelper.parseText(newXml);Element rootEle = document.getRootElement();String username = rootEle.elementTextTrim("username");//String password = rootEle.elementTextTrim("password");ajaxResponse.setCode(210);ajaxResponse.setMsg("登录失败");ajaxResponse.setContent(username);}catch (Exception e){e.printStackTrace();ajaxResponse.setCode(211);ajaxResponse.setMsg("数据处理失败");}return ajaxResponse;}}

可以看到,将关键字过滤(替换成 “”),会导致传入的数据不符合 xml 的格式,后端在 xml 解析器在解析数据时,直接出错并跳转到异常处理代码段,证明这样过滤是有效的。以上为一次简单的研究 xxe,后续有待深入研究。

http://www.yayakq.cn/news/654402/

相关文章:

  • 中英文 微信网站 怎么做随机关键词生成器
  • 企业网站建设招标技术标准网站空间200m
  • 东莞建站响应式网站多少钱wordpress 邮件服务
  • 网站编程教学建设公司logo
  • 无锡网站建设电话私人网站怎么注册
  • 乐清高端网站建设学院网站建设及维护实施办法
  • 深圳建筑工程交易服务中心网江门seo外包服务
  • 垂直网站需要多少钱注册了域名怎么做网站
  • 团风网站建设网站到处仿
  • 小马网站建设企业建站用什么软件
  • 手机壁纸网站源码静态网站策划书
  • 网站开发南昌有什么搜图片的网站好
  • 模板网站哪个平台好广告设计基础知识
  • 怎样进入当地建设局网站网络规划设计师教程电子版2023
  • 云南网站建设企业wordpress导航模版
  • 做外贸哪个网站比较好2017亚马逊雨林视频
  • 怎么让网站被百度收录html网站自带字体怎么做
  • 男人和男人做爰漫画网站电商网站用php做的吗
  • 如何进行网站改版设计北京百度推广开户
  • 南京专业网站制作公司有哪些如何做网络推广
  • 柳市做公司网站快盘做网站服务器
  • 网站建设排行公司邯郸专业做wap网站
  • 江阴市住房和城乡建设局网站移动应用开发女生学难不难
  • 动地科技登录网站精品成品网站1688
  • 共享备案网站微信红包封面开放平台
  • 手机网站头部新年祝福语在线制作网站
  • 海南城乡建设厅网站微信公众号怎么做成微网站
  • 抄袭网站设计vi设计公司形象墙
  • 免费推广平台排行榜新网站上线 怎么做seo
  • 做机械一般做那个外贸网站镇平做网站