Nmap渗透测试脚本是怎样的


Nmap渗透测试脚本是怎样的 ,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

上一个命令运行带有操作 系统检测 (-O)的SYN扫描,即 服务检测(-sV),最重要的是NSE在(-sC)上。 -sC选项启用NSE并在默认类别中运行任何脚本。 这组脚本被默认为是安全的,它不会执行任何可能会干扰在该服务上运行的服务的目标主机的操作。 但是,某些脚本执行可能引发的操作入侵检测系统(IDS)和入侵防护系统(IPS)中的警报。首先我们得了解脚本的分类信息,这样我们才能更好地把我们自定义的脚本进行归类利用。Nmap使用 –script选项进行脚本的选择。 这个选项后面可以是一个脚本名称,NSE类别,NSE文件的路径,包含脚本的文件夹,甚至表达式。使用 –script通过脚本名称或类别进行选择脚本。Nmap选项会按名称执行脚本。 执行时用逗号分隔几个脚本:以下屏幕截图显示了http-huawei-hg5xx-vuln脚本的输出。 此脚本利用华为设备中的远程漏洞进行检索,检索的信息包括PPPoE凭证和无线网络安全配置:

–script-args 选项用于在NSE脚本中设置参数。还是举个栗子,设置http-title脚本的参数useragent,使用这个表达式:nmap -sV –script http-title –script-args http.useragent =“Mozilla 1337“当然有时你也可以在忽略脚本名称设置参数(以下两条表达意思是一致的):nmap -p80 –script http-trace –script-args path nmap -p80 –script http-trace –script-args http-trace.path 如果你使用共享参数名称的脚本,就必须避免参数冲突。例如下面中的uri参数,公用的时候要是需要进行额外的设置时就必须加上完整的脚本名称,避免参数之间的冲突。编写NSE脚本我们需要有lua编程语言的基础,可以回去自己学习一下。我这里简单列出编写脚本之前必须了解的一些语法。其他的就自己回去学习吧。转载于菜鸟教程:http://www.runoob.com/lua/lua-tutorial.html轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。其它特性支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等Nmap的目录结构我们只需要简单的了解一下它的结构即可,了解它的目录结构是为了清楚Nse脚本存放的位置。这里有几个注意点:1.编写的脚本的后缀为nse2.编写之后的NSE脚本存放在script文件夹内,这样脚本才可以生效3.必须使用–script选项进行调用Nse脚本

NSE脚本的编写流程在书写NSE脚本之前我们必须了解它的书写步骤,为了方便大家理解,我把一个NSE脚本的书写分为了四步。1.导入脚本编写所需库2.编写脚本描述信息3.确定Rule类型4.编写Action可能此时你还有点蒙,没关系,我们看一下图思路就清晰了。Namp nse 脚本模板结构如图所示:

文章看到这里大家肯定想接下来肯定要开始编写NSE脚本了吧。还不行呢,我们先举个几个栗子来说说四个Rule类型的区别。Rule的四种类型Rule:用于描述脚本的触发规则,返回值只有true和false两种。返回值决定了后面action对应的函数是否执行,注意:true(执行),flase(不执行)。它有四种类型分别是Prerule,Hostrule,Portrule,Postrule。下面的几个栗子的环境为:基础参数扩展PrerulePrerule会在Namp没有扫描之前进行触发。举个栗子:我们新建一个prerule.nse文件,然后我们把它存放在script文件夹下。只要”RongRi AnQuan NSE script Prerule test”打印在Namp扫描之前,就可以证明Prerule会在Namp没有扫描之前进行触发。

我们都知道在测试阶段我们难免会出现错误,那假设我们出现了错误我们应该如何解决呢。这时我们需要借助Nmap的调试模式进行调试。还是老规矩举个栗子:那我这里新建一个preruleDebug.nse文件让它打印系统信息故意让其出错(至于为啥会出错后面会解释),然后调试一下给大家看。我们只需要加上-d选项即可进入调试模式,那一般我这边是-d 3,3代表的是等级,等级越高,越详细。-d 3打印的调试的信息已经足够详细了,所以我习惯选择-d 3.错误界面如图所示:

调试模式如图所示:

我们从图中可以看到出错原因是因为prerule threw an error!看到详细原因是因为attempt to index a nil value (local ‘host’)意思是说host是个无效值。原因是:我们知道prerule是在Nmap扫描之前触发脚本的。那也就是说我们是无法在action中打印出操作系统信息。好了,到这里大家也应该知道如何调试错误了。听说,对比产生美我们都知道对比产生美,那我们在这个错误的模板上改一下规则让它变成hostrule,看看结果如何。HostruleHostrule会在Namp执行主机发现或探测进行触发。举个栗子:新建一个hostrule.nse文件。复制上面preruleDebug.nse的代码,但是做一点改动,就是Rule的类型改为Hostrule。然后运行能否打印我们想要的系统信息(嘻嘻,结果当然是成功打印啦)。

PortrulePortrule会在Namp执行端口扫描时触发脚本。举个栗子:新建portrule.nse文件,代码如下,然后我们扫描几个端口然后看看是否在扫描端口的时候打印出“Hongri Anquan yumu”和host.ip。结果如下:

再举一个栗子:小试牛刀,我们写一个Nse脚本来获取zzcms8.2网站上的客服电话号码。

参数知识扩展注意小细节

Portrule会在Namp结束时触发脚本,通常用于扫描结果的数据提取和整理。举个栗子: 触发时候免费云主机域名打印”Hongri Anquan test postrule”

需要详细zzcms8.2代码审计的内容请到:https://bbs.ichunqiu.com/thread-36147-1-1.html那我这里本地搭建了环境,然后我先简单使用火狐测试一下是否存在反射型xss。废话不说,打字累人,看操作。

嗯,只要玩过web渗透的都应该知道此时源码当中肯定插入了,这点必须清楚,因为这是我们后面编写Nse脚本思路。

好。我们来看看图,确定编写思路。

看完四步的你应该很清晰如何编写我们的脚本了,那就开干吧。我这里新建一个zzcmsxss.nse,代码如下:结果如下(保存有xml的输出格式):

看完上述内容,你们掌握Nmap渗透测试脚本是怎样的 的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注云编程开发博客行业资讯频道,感谢各位的阅读!

相关推荐: SpringSecurity系列之请求默认已开启防火墙的示例分析

这篇文章给大家介绍SpringSecurity系列之请求默认已开启防火墙的示免费云主机域名例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。自己写当然也可以实现,但是大部分情况下,大家都不是专业的 Web 安全工程师,所以考虑问题也不过…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 02/02 20:51
Next 02/02 20:51