日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

perl anyevent socket监控web日志server

發布時間:2025/3/8 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 perl anyevent socket监控web日志server 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上篇已經講過client端的CODE這部分code主要用來接收client端發送來的日志,從數據庫中讀取reglar然后去匹配.如果出現匹配則判斷為XSS***.
server端的SOCKET接收用了coro相關的模塊.配置文件仿照前一篇博客讀取即可.#!/usr/bin/perl use warnings; use strict; use AnyEvent; use AnyEvent::DBI::MySQL; use Config::Tiny; use FindBin; use utf8; use Coro; use Coro::Socket; use Coro::Handle; use lib "$FindBin::Bin/../module"; my $server_config_file = "$FindBin::Bin/../etc/config.ini"; my $config = Config::Tiny->new; my $server_config = $config->read($server_config_file); my $server_log_info = $server_config->{'server_config_info'}; my $username = $server_log_info->{'username'}; my $password = $server_log_info->{'password'}; my $port = $server_log_info->{'server_port'}; my $host = $server_log_info->{'host'}; my $database = $server_log_info->{'database'}; my $server_ip = $server_log_info->{'server_ip'}; $|++; print "Start listening Port:$port", "\n"; my $s = Coro::Socket->new( LocalAddr => $server_ip, # 創建一個偵聽socket LocalPort => $port, Listen => 5, Proto => 'tcp' ) or die $@; my @coro; while (1) { my ( $fh, $peername ) = $s->accept; next unless $peername; &doit($fh); } sub doit { my $dbh = AnyEvent::DBI::MySQL->connect( "dbi:mysql:database=$database", "$username", "$password" ); my $fh = shift; push @coro, async { $fh->autoflush(1); while ( my $line = $fh->readline() ) { log_regex_do( $line, $dbh ) } $fh->close; } } sub log_regex_do { my ( $log, $dbh, $cv ) = @_; my ( $log_type, $url, $source, $local, $date, $option, $offer, $user ) = $log =~ /t:(.*)\|me:(.*)\|so:(.*)\|lo:(.*)\|date:(.*)\|opt:(.*)\|of:(.*)\|u:(.*)$/; my $log_class = type_result( $log_type, $dbh, $cv ); if ( defined bool( $local, $user, $dbh ) ) { my ($log_result) = log_result( $url, $dbh ); if ($log_result) { get_result_db( $log_type, $log_result, $url, $source, $user, $date, $option, $offer, $dbh ); } } } sub type_result { my ( $method, $dbh ) = @_; my $cvs = AnyEvent->condvar; my $type; $dbh->do("set names utf8"); $dbh->selectall_hashref( "select * from w3a_log_monitor_type", 'id', sub { my ($ary_ref) = @_; for my $id ( keys %$ary_ref ) { $type = $ary_ref->{$id}->{'id'} if ( $method eq $ary_ref->{$id}->{'log_type_name'} ); } $cvs->send; } ); $cvs->recv; return $type; } sub bool { my ( $local, $user, $dbh ) = @_; my $cv = AnyEvent->condvar; my $count; # $dbh->do("set names utf8"); $dbh->selectcol_arrayref( "select * from w3a_log_monitor where task_name='$user' and task_url='$local'", sub { my ($ref_ary) = @_; $count = @$ref_ary; $cv->send; } ); $cv->recv; return $count; } sub get_result_db { my ( $type, $method_id, $method_url, $method_source, $method_user, $method_date, $method_option, $method_offer, $dbh ) = @_; my $cv = AnyEvent->condvar; my $sth = $dbh->prepare( " insert into w3a_log_monitor_attack ( method_name, method_url, attack_source, attack_user, attack_date, attack_option, attack_offer, log_type )values(?,?,?,?,?,?,?,?) " ); $sth->bind_param( 1, $method_id ); $sth->bind_param( 2, $method_url ); $sth->bind_param( 3, $method_source ); $sth->bind_param( 4, $method_user ); $sth->bind_param( 5, $method_date ); $sth->bind_param( 6, $method_option ); $sth->bind_param( 7, $method_offer ); $sth->bind_param( 8, $type ); $sth->execute( sub { my ($rv) = @_; $cv->send; } ); $cv->recv; } sub log_result { my ( $method, $dbh ) = @_; my $cv = AnyEvent->condvar; my $sum_dbh = $dbh; my @target_id; $dbh->do("set names utf8"); $dbh->selectall_hashref( "select * from w3a_log_method", 'id', sub { my ($ary_ref) = @_; for my $id ( keys %$ary_ref ) { $cv->begin; my $switch = $ary_ref->{$id}->{'method_switch'}; unless ( $switch == 0 ) { if ( $method =~ /$ary_ref->{$id}->{'method_regex'}/i ) { print "Match regular is: ", $ary_ref->{$id}->{'method_regex'}, "\n"; push @target_id, $ary_ref->{$id}->{'id'}; } } $cv->end; } } ); $cv->recv; attack_update( $_, $dbh ) for @target_id; return @target_id; } sub attack_update { my ( $id, $dbh ) = @_; my $cv = AnyEvent->condvar; $dbh->selectcol_arrayref( "select attack_sum from w3a_log_method where id='$id' ", sub { my ($ref_ary) = @_; my $sum = $ref_ary->[0] + 1; $dbh->do( "update w3a_log_method set attack_sum='$sum' where id='$id'"); $cv->send; } ); $cv->recv; }

?

?

使用方法如下:

1.服務端監控

2.客戶端監控

3.進行XSS模擬

?

4.查看服務端狀態

XSS之前的數據庫查詢狀態

?

XSS之后的數據庫查詢狀態

?

?

轉載于:https://blog.51cto.com/mcshell/1362689

總結

以上是生活随笔為你收集整理的perl anyevent socket监控web日志server的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本a视频在线观看 | 99亚洲视频 | 成年人黄色大全 | 激情啪啪网站 | 毛片网站免费 | 视频区小说区 | 亚洲精品亚洲 | 超碰公开在线观看 | 91精品国产综合久久久久久 | 特级av | 91精品国产91久久久久青草 | 精品在线免费播放 | 亚洲第五页 | 欧美丰满熟妇xxxxx | 美女日日日 | 免费毛片基地 | 波多野结衣加勒比 | 西方av在线 | 久久好色 | 毛片123| 国产91精品一区二区麻豆亚洲 | 极品久久久 | 国产精品zjzjzj在线观看 | 黄色成人在线免费观看 | www.黄色.| 国产精品九九九九 | 蜜桃视频一区二区 | 国产女人18毛片水18精 | www.欧美国产 | 在线看国产视频 | 一区二区三区av | 欧美精品在线观看 | 欧美成人精品一区二区男人小说 | 欧美一区不卡 | 扩阴视频 | 国产午夜精品久久 | 九九热国产精品视频 | aaa黄色 | 91精品国产一区二区三竹菊影视 | 久久中文字幕无码 | 申鹤乳液狂飙 | 看a网站 | 女儿的朋友4在线观看 | 国产一区视频网站 | 嫩草嫩草嫩草嫩草嫩草嫩草 | 一节黄色片 | 新婚若妻侵犯中文字幕 | www.久久| 丝袜老师让我了一夜网站 | a级片在线免费看 | 超碰狠狠干 | 欧洲性生活片 | 麻豆免费在线播放 | 亚洲欧洲一区 | 潮喷失禁大喷水无码 | 国产熟妇搡bbbb搡bbbb | 国产网友自拍 | 天天综合av| 性生交生活片1 | av片一区二区三区 | 亚洲一二三区在线 | 四虎精品永久在线 | 久操新在线 | 天堂网国产 | 一级做a爱片性色毛片 | 亚洲va在线∨a天堂va欧美va | 亚洲网址在线观看 | 精品成人无码一区二区三区 | 欧美日韩免费一区 | 久久亚洲网 | 国产精品腿扒开做爽爽爽挤奶网站 | 刘亦菲一区二区三区免费看 | 国产a一级片 | 国产日韩欧美精品在线观看 | 久久伊人草 | 国产精品一区二区三区免费观看 | 老司机av福利 | 亚洲欧美综合色 | 精品亚洲一区二区 | 日韩av在线一区 | 日出白浆视频 | 国产激情无套内精对白视频 | 老熟妇高潮一区二区三区 | 69xav| 看黄色网址 | 国产嫩草在线观看 | www黄色在线观看 | 最新黄网 | 日本黄色三级网站 | 精品乱码一区二区三区 | 麻豆精品网站 | 久射久 | 奇米一区二区 | 91网站免费视频 | 波多野结衣在线播放视频 | 国产真实乱人偷精品人妻 | 多啪啪免费视频 | 欧美在线视频精品 | 久久五月婷|