something about DVWA - brute force

DVWA

DVWA => 备份地址

Brute Force(暴力破解)

Low

  • 选取暴破点

    GET /dvwa/vulnerabilities/brute/?username=admin&password=§p§&Login=Login HTTP/1.1 中,
    password进行暴破。

  • 设置payload

    Attact type选择SniperPayloads选择Runtime file, 既而选择密码 字典文件(2019_top100.txt),暴力破解即可。

  • 源码分析

    • 直接从request中获取参数

      1
      $pass = $_GET[ 'password' ]; 
    • 直接将参数以字符串的方式拼接入sql

      1
      $query  = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; 

Medium

  • 选取暴破点

    Low级别相同。

  • 设置payload

    Low级别相同。

  • 源码分析

    request中获取参数后,使用mysqli_real_escape_string函数对参数中可能干扰到sql查询的特殊字符进行删除。

    1
    $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); 

High

  • 选取暴破点

    由于有token检测,除了password暴破点外,还需要设置user_token暴破点。
    GET /dvwa/vulnerabilities/brute/?username=admin&password=§pa§&Login=Login&user_token=§ad5031ef52b181892a11a845db6807b7§ HTTP/1.1

  • 设置Options

    由于需要绕过token检测,因此需要获取页面请求时返回的token值。

    由于需要先进行页面请求,再进行暴破,因此需要用到重定向Redirections中设置Follow redirections:Always

    Options中,Grep - Extract中添加一条记录,捕获token值。
    Refetch response后,选中tokenvalue值,burpsuite会自动生成对应的捕获正则表达式, 添加即可在每次的页面请求response中捕获对应token值,用于payload中。

    由于绕过token需要对每一次的页面请求responsetoken值进行捕获,因此不可以使用多线程。 Resource Pool中自定义Max concurrent requests1的规则。

  • 设置payload

    Attact type设置为Pitchfork后对每个暴破点设置payload

    password暴破点的payload正常设置。

    tokenpayload设置为Recursive grep,也即使用捕获的token值。

  • 源码分析

    • 检测token

      先进行token的检测检测通过,再进行后续操作。

      1
      checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
    • stripslashes函数过滤参数

      request中获取参数后,先使用stripslashes函数去除参数中的\字符。

      1
      $pass = stripslashes( $pass ); 
    • mysqli_real_escape_string函数过滤参数

      再使用mysqli_real_escape_string函数对参数中可能干扰到sql查询的特殊字符进行删除。

      1
      $pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); 

Impossible

相比High级别,增加了尝试次数的限定,超过尝试次数后一段时间内禁止尝试。

1
2
3
4
// Default values
$total_failed_login = 3;
$lockout_time = 15;
$account_locked = false;

something about wireshark

something about wireshark

wireshark

Capture过滤表达式

只抓取表达式 匹配成功 的包,对于不匹配的包不予抓取。
表达式为与 TCP dump 相同的表达式。

  • 查看手册

    packet filter syntax

    1
    man pcap-filter
  • 只关注80端口

    1
    tcp port 80
  • 只关注icmp协议

    1
    icmp

Display过滤表达式

已经抓取 的包,进行 过滤显示 ,只显示表达式 匹配成功 的包,对于不匹配的包不予显示。
与 Capture过滤表达式 不同, Display过滤表达式是wireshark package列表过滤表达式, 语法 不相同。
Display过滤表达式 语法更多

  • 相关文档

  • Display Filter Expression

    display filter 输入框处右击,选择 Display Filter Expression ,进入表达式编辑窗口,用于创建 复杂表达式

网络协议

数据包详情

  • MAC地址以太网数据包
  • Package Bytes 中十六进制内容为 0800 时,一般为标识 IPv4协议

专家模式

  • Expert Information 专家模式

    专家模式下,会将 对话 、错误信息、重复应答、警告等在列表中显示。更加方便查看。

远程抓包

  • SSH remote capture

    • 需要远程机器安装wireshark(桌面版/命令行版 tshark 都可), 远程执行二进制程序一般为dumpcap(由wireshark提供)。
    • 配置ssh相关内容,配置 远程网卡 等信息,配置远程二进制程序等。
    • 配置完成后,即可由本机wireshark通过ssh与远程wireshark二进制程序联动,实际工作由远程wireshark二进制程序负责。
    • 本地wireshark负责内容输出。
  • Tcpdump 远程抓包

    • 需要远程机器安装tcpdump作为远程执行二进制程序。

    • tcpdump 使用

      tcpdump 常用参数
      -D 列出本机可用网卡
      -i wlan0 指定使用wlan0网卡
      -c 20 指定抓取20个包
      -w filename 指定输出到文件
      -w - 指定标准输出
      ‘filter expressions’ 最后附加filter参数
      -l 指定逐行输出,不加缓存

      搭配ssh与本地wireshark使用:

      1
      2
      # 将远程tcpdump的标准输出作为wireshark的标准输入
      ssh root@123.124.125.126 "tcpdump -i wlan0 -c 20 -w - 'not port 22'" | wireshark -i -

      本地wireshark与远程tcpdump联动,实时抓包(不指定-c参数)

      1
      2
      3
      4
      # -k 参数指定本地wireshark实时抓包
      ssh root@123.124.125.126 "tcpdump -i wlan0 -w - 'not port 22'" | wireshark -k -i -
      # -l 参数指定远程tcpdump逐行输出,而非缓存到一定程度后分批输出
      ssh root@123.124.125.126 "tcpdump -l -i wlan0 -w - 'not port 22'" | wireshark -k -i -
  • tshark 远程抓包

    tcpdump类似的命令行。

    tshark 常用参数
    -D 列出本机可用网卡
    -i eth0 指定使用eth0网卡
    命令最后可以增加filter expressions