- 主题
- 0
- 积分
- 0
- 贝壳
- 0 个
- 注册时间
- 2007-1-18
- 最后登录
- 2007-1-18
|
[原创]用强大的脚本语言perl编写安全检测工具
[这个贴子最后由damnyou在 2005/08/07 08:58pm 第 2 次编辑]
[watermark]
perl是功能强大的脚本语言,特别在文本处理上更是其他语言望尘莫及。如果没有很特殊的要求,用它来做一些“简单的事情”,真的是很方便。而且是一种跨平台的语言,决大多数的网上能找到的代码,和自己书写的代码,一般只需要做少数的修改就可以在WINDOWS、*NIX、MACOS等平台使用。
随着它的发展网络编程方面运用得越来越广泛。
到这个网站的朋友大多是关注网络安全的。
大家知道一般查看某服务器的安全的时候大家都先进行的就是扫描。用perl语言我们同样可以做出很多高效的网络安全扫描。
下面我用一段完整的多线程端口扫描器做个例子。
############################################################
#!C:\perl\bin\perl.exe -w
use IO::Socket; #socket连接用到的模块
use Parallel::ForkManager; #线程管理用到的模块
prit "Port Scan Test\n";
print " By Xtiger-->www.xtiger.net\n";
print "Usage:pscan.pl 192.168.1.1\n"; #输出提示部分
my $host=shift;#得到输入的主机IP
my @all_port=(7,9,21,25,79,80,110,139,3389);#需要检测的端口集,大家可以添加
$pm = new Parallel::ForkManager(50);#定义线程数为50
foreach $port (@all_port) {#循环检测端口port
my $pid = $pm->start and next;#循环创建线程
if($socket = IO::Socket::INET->new ( Proto => "tcp",#socket创建部分定义几个数据:协议TCP,端口$port,IP$host
PeerAddr => $host,
PeerPort => $port,)
{
print " [√] $host:$port\n";#如果socket连接成功则输出√
close $socket;
}
else
{
print " [×] $host:$port\n";#否则打印×
}
$pm->finish; #结束线程
}
相应的,perl语言中还有很多的模块,比如FTP 、mail、POP等等,大家应该知道怎么做了吧。一样的需要通过通过连接请求检查返回状态就可以得知目标主机的相关情况了。循环检测然后打印输出结果。
如果大家有兴趣一起写一个功能比较完善的扫描器也不是不可能,但大家就要多积累一些其他知识了,我只不过是在这个地方抛了块砖。比如端口扫描器,我们可以换其他协议的连接,或者其他连接方式。而在CGI、ASP等脚本漏洞的检测方面我们可以有好几种方式可以使用。大家多学习学习些网络协议、各种服务的协议(如果在检测web安全问题时,你连返回的状态码都不懂就没办法了-_-!),以及perl的知识。
我的时间和知识有限,暂且写到这里,相信大家会有更好的代码和工具编写出来的。
大家到www.xtiger.net提建议和意见哈。另:叶子啊,怎么不给我支持CGI啊,我可怜的留言本用不了,咋办呢?[/watermark]
好久了才来上网,看看海岸线,刚才一朋友说,怎么不到海岸线来看看了?于是抽空写了这么一篇文章,大家别骂我“半瓶子醋又来晃荡”啊。只是个人的一些简单想法。
希望各位多指点。 |
|