请点击文末#Bug Bounty Bootcamp标签查看合集或关注公众号点击底部【漏洞书籍】子菜单,如果对您有帮助还请点赞、在看、评论、转发、关注、打赏哦,您的互动就是我更新最大的动力!
-
test命令
[ -f $DIRECTORY/nmap ]等同于 test -f $DIRECTORY/nmap。
if [ $3 -eq 1 ]
if [ $3 -gt 1 ]
if [ $3 -ge 1 ]
if [ $3 -lt 1 ]
if [ $3 -le 1 ]
if [ -z "" ] #为空是真
if [ -n "abc" ] #不为空是真
if [ -d /bin]
如果/bin/bash是一个存在的文件file,则返回true:
if [ -f /bin/bash ]
如果/bin/bash是一个可读read的文件,则返回true:
if [ -r /bin/bash ]
或可写write文件:
if [ -w /bin/bash ]
或可执行execute文件:
if [ -x /bin/bash ]
if [ $3 -gt 1 ] && [ $3 -lt 3 ]
如果其中至少有一个是真的,这个就返回真:
if [ $3 -gt 1 ] || [ $3 -lt 0 ]
-
编写函数库
文件名:scan.lib
nmap_scan()
{
nmap $DOMAIN > $DIRECTORY/nmap
echo "The results of nmap scan are stored in $DIRECTORY/nmap."
}
dirsearch_scan()
{
$PATH_TO_DIRSEARCH/dirsearch.py -u $DOMAIN -e php --simple-report=$DIRECTORY/dirsearch
echo "The results of dirsearch scan are stored in $DIRECTORY/dirsearch."
}
crt_scan()
{
curl "https://crt.sh/?q=$DOMAIN&output=json" -o $DIRECTORY/crt
echo "The results of cert parsing is stored in $DIRECTORY/crt."
}
source ./scan.lib
PATH_TO_DIRSEARCH="/Users/vickieli/tools/dirsearch"
getopts "m:" OPTION
MODE=$OPTARG
for i in "${@:$OPTIND:$#}"
do
DOMAIN=$i
DIRECTORY=${DOMAIN}_recon
echo "Creating directory $DIRECTORY."
mkdir $DIRECTORY
case $MODE in
nmap-only)
nmap_scan
;;
dirsearch-only)
dirsearch_scan
;;
crt-only)
crt_scan
;;
*)
nmap_scan
dirsearch_scan
crt_scan
;;
esac
echo "Generating recon report for $DOMAIN..."
TODAY=$(date)
echo "This scan was created on $TODAY" > $DIRECTORY/report
if [ -f $DIRECTORY/nmap ];then
echo "Results for Nmap:" >> $DIRECTORY/report
grep -E "^s*S+s+S+s+S+s*$" $DIRECTORY/nmap >> $DIRECTORY/report
fi
if [ -f $DIRECTORY/dirsearch ];then
echo "Results for Dirsearch:" >> $DIRECTORY/report
cat $DIRECTORY/dirsearch >> $DIRECTORY/report
fi
if [ -f $DIRECTORY/crt ];then
echo "Results for crt.sh:" >> $DIRECTORY/report
jq -r ".[] | .name_value" $DIRECTORY/crt >> $DIRECTORY/report
fi
done
-
构建交互式程序
./recon.sh -i -m nmap-only
echo "Please enter a domain!"
read $DOMAIN
while 条件
do
做点什么
done
while [ $INPUT != "quit" ];do
echo "Please enter a domain!"
read INPUT
if [ $INPUT != "quit" ];then
scan_domain $INPUT
report_domain $INPUT
fi
done
while getopts "m:i" OPTION; do
case $OPTION in
m)
MODE=$OPTARG
;;
i)
INTERACTIVE=true
;;
esac
done
source ./scan.lib
while getopts "m:i" OPTION; do
case $OPTION in
m)
MODE=$OPTARG
;;
i)
INTERACTIVE=true
;;
esac
done
scan_domain(){
DOMAIN=$1
DIRECTORY=${DOMAIN}_recon
echo "Creating directory $DIRECTORY."
mkdir $DIRECTORY
case $MODE in
nmap-only)
nmap_scan
;;
dirsearch-only)
dirsearch_scan
;;
crt-only)
crt_scan
;;
*)
nmap_scan
dirsearch_scan
crt_scan
;;
esac
}
report_domain(){
DOMAIN=$1
DIRECTORY=${DOMAIN}_recon
echo "Generating recon report for $DOMAIN..."
TODAY=$(date)
echo "This scan was created on $TODAY" > $DIRECTORY/report
if [ -f $DIRECTORY/nmap ];then
echo "Results for Nmap:" >> $DIRECTORY/report
grep -E "^s*S+s+S+s+S+s*$" $DIRECTORY/nmap >> $DIRECTORY/report
fi
if [ -f $DIRECTORY/dirsearch ];then
echo "Results for Dirsearch:" >> $DIRECTORY/report
cat $DIRECTORY/dirsearch >> $DIRECTORY/report
fi
if [ -f $DIRECTORY/crt ];then
echo "Results for crt.sh:" >> $DIRECTORY/report
jq -r ".[] | .name_value" $DIRECTORY/crt >> $DIRECTORY/report
fi
}
if [ $INTERACTIVE ];then 【1】
INPUT="BLANK"
while [ $INPUT != "quit" ];do 【2】
echo "Please enter a domain!"
read INPUT
if [ $INPUT != "quit" ];then 【3】
scan_domain $INPUT
report_domain $INPUT
fi
done
else
for i in "${@:$OPTIND:$#}";do
scan_domain $i
report_domain $i
done
fi
-
使用特殊的变量和字符
chmod 777 script.sh
if [ "$?" -ne "0" ]; then
echo "Chmod failed. You might not have permissions to do that!"
fi
export VARIABLE_NAME=VARIABLE_VALUE
假设在其中一个脚本中,你设置了变量VAR:
VAR="hello!"
ls *.txt
echo `whoami`
例如,此命令将输出字符串abc '*' 123
echo "abc '*' 123"
echo "" is a double quote. $ is a dollar sign. ` is a backtick. \ is a backslash."
此命令将回显
" is a double quote. $ is a dollar sign. ` is a backtick. is a backslash.
您还可以在新行之前使用反斜杠来表示代码行尚未结束。例如,这个命令
chmod 777
script.sh
和这一个是一样的:
chmod 777 script.sh
-
定期自动扫描
通过这种方式,您可以监视应用程序行为中的变化,并找到利用它的方法。
crontab -e
所有的crontabs都遵循相同的语法:
A B C D E 要运行的命令
A: Minute (0 – 59)
B: Hour (0 – 23)
C: Day (1 – 31)
D: Month (1 – 12)
E: Weekday (0 – 7) (星期天 is 0 or 7, 星期一 is 1...)
最后一个数字是命令应该运行的星期日,范围从0到7,0和7都表示命令应该在星期天运行,1表示命令应该在星期一运行,以此类推。例如,您可以将这一行添加到您的crontab,以在每天晚上9:30运行您的侦察脚本:
30 21 * * * ./scan.sh
30 21 * * * run-parts /Users/vickie/scripts/security
git diff SCAN_1 SCAN_2
DOMAIN=$1
DIRECTORY=${DOMAIN}_recon
echo "Checking for new changes about the target: $DOMAIN.n Found these new things."
git diff <SCAN AT TIME 1> <SCAN AT TIME 2>
使用cron定期执行它
30 21 * * * ./scan_diff.sh facebook.com
git init
git remote add origin https://PATH_TO_THE_REPOSITORY
最后,使用Cron定期扫描目标并将文件上传到GitHub:
30 21 * * * ./recon.sh facebook.com
40 21 * * * git add *; git commit -m "new scan"; git push -u origin master
原文始发于微信公众号(SecurityBug):侦察脚本编写(test+cron+交互程序+函数库)3
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论