Nmap NSE初探-thinkphp远程代码执行脚本分享

2020-08-20 14:39:54 浏览数 (1)

Nmap简介

Nmap大家肯定都会用,不会的去翻我之前的文章,里面详细介绍过 Nmap 最吸引我的地方就是 NSE 部分,近600个脚本可以让你自如的完成各种渗透测试攻击

研究背景

最近一段时间各种漏洞层出不穷,而且远程命令执行,远程代码执行等越来越多了,可以说每一次爆发都是一次抓鸡的好机会 想在全球范围内快、准的率先占据肉鸡市场,我们如果用Python等语言写exp就需要去写端口发现,端口服务识别等功能,在这方面,应该没有谁比nmap做得更好了吧,所以写nmap的脚本是实现这一目标的捷径

Nmap的脚本使用规则

使用单个脚本 nmap www.baidu.com -p80 --script=sctipt_name 使用一组脚本 Nmap 官方设计的时候,将NSE按照功能进行了分组管理,调用的时候可以直接调用一个组,下面是分组信息

  • auth
  • broadcast
  • brute
  • default
  • discovery
  • dos
  • exploit
  • external
  • fuzzer
  • intrusive
  • malware
  • safe
  • version
  • vuln

根据分组的名字可以分辨出其对应的功能,比较常用的就是这个 vuln了,这个是漏洞检测分组 调用方法 nmap www.baidu.com -p80 --script=vuln 需要注意的是,同一个脚本可能存在于多个分组,比如一个脚本可能既属于vuln,又属于exploit

  • 使用多组脚本

比如我想同时调用 version和vuln,那么我们可以使用下面这种方法 nmap www.baidu.com -p80 --script=version,vuln nmap www.baidu.com -p80 --script="version and vuln"

  • 两者其中一个的话

nmap www.baidu.com -p80 --script="version or vuln"

  • 不使用某个分组的脚本

nmap www.baidu.com -p80 --script=“not version”

  • 使用自定义的一组脚本(非NSE默认路径)

nmap www.baidu.com -p80 --script=default,banner,/tmp/mynse/

  • 使用名称包含特定字符的脚本

nmap www.baidu.com -p80 --script="http-*" 如果你想调用全部的脚本,那么好,教你一个大招 nmap www.baidu.com -p80 --script=all

Nmap NSE的其他功能 更新脚本库 --script-updatedb 查看一个脚本的参数 --script-help= 追踪脚本执行过程中收发的数据包 --script-trace 脚本提交参数 --script-args= 这个比较重要,我得详细说说 --script-args 的参数是key,value形式的,被存储在 nmap.registry.args 中,可以通过 stdnse.get_script_args 来进行获取 nmap -sC --script-args 'user=foo,pass=",{}=bar",paths={/admin,/cgi-bin},xmpp-info.server_name=localhost' 通过这个参数,可以把我们需要的非主机和端口参数传递给NSE 当然,参数太多的话也可以放进一个文件中,使用下面这种方法进行调用 --script-args-file=params.txt

Thinkphp 5.0/5.1 远程代码执行漏洞

这个漏洞利用比较简单,判断也简单,所以拿这个来小试牛刀 payload: public/index.php?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 GET方法请求这个url就会直接执行phpinfo 代码,以这个思路我编写了一个NSE 在文末有链

Lua脚本语言

Nmap这个工具使用了很多门语言进行编写,其中包括 C/C , Python, Lua等 C和C 写主程序 Python写图形化 Lua 编写NSE 所以,如果你想要和我一样编写NSE,Lua是你绕不过去的关 Lua 脚本语言和Python 有点相似,我用了两天了解了大概 但是我觉得Lua语言很操蛋,编写起来不爽!

脚本使用方法

将thinkphp-rce.nse 文件放在Nmap的脚本目录中 kali 是 /usr/share/nmap/scripts/ mac 是 /usr/local/share/nmap/scripts/ windows 不了解,自己看安装到哪里了吧 使用方法 nmap www.baidu.com -p80 --script=thinkphp-rce

可以看到这个主机是存在漏洞的,可以直接远程代码执行


其实这个脚本非常简单,用Python写可能就是5分钟,但是我学习NSE的一些规则和Lua语言耗费了很长时间,看不懂编写规则没有关系,后续我会详细的写出来

0 人点赞