当你在Docker环境,容器中的系统被阉割过,只有系统内核,连个ifconfig都没有的环境,并且不能出网,也不能装工具,这时候如何去探测内网? 有些条件环境苛刻无法上传文件,该如何探测?这块知识点对后面有什么帮助?
#查看当前主机连接数最多的前三位
ss -nt|grep "^ESTAB"|tr -s ' ' :|cut -d: -f6|sort|uniq -c|sort -nr|head -n3
#排队掉空行和#开头的行
grep -v '^#' /etc/profile|
#匹配IP地址
ifconfig ens33|grep netmask|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'|head -n1
a :新增
c :取代
d :删除
i :插入
p :打印
s :取代
#说明:
-ir 不支持
-i -r 支持
-ri 支持
-ni 会清空文件
#地址格式
##单地址
#:指定行
$:最后一行
##地址范围
#,# 3,6行
应用场景
#打印1行
sed -n '1p' /etc/issue.bak
#打印最后一行
sed -n '$p' /etc/passwd
#倒数第二行
sed -n "$(echo $[`cat /etc/passwd|wc -l`-1])p" /etc/passwd
#删除所有以#开头的行
sed -i '/^#/d' fstab
sed -ri.bak '/^#/s/^#//' /etc/fstab
#获取IP
ifconfig ens33 |sed -nr "2s/[^0-9]+([0-9.]+).*/\1/p"
#取基名和目录名
echo "/etc/sysconfig/network-scripts/" |sed -r 's#(^/.*/)([^/]+/?)#\2#' 取基名
echo "/etc/sysconfig/network-scripts/" |sed -r 's#(^/.*/)([^/]+/?)#\1#' 取目录
#取文件的前缀和后缀
echo a.b.c.gz |sed -En 's/(.*)\.([^.]+)$/\1/p'
echo a.b.c.gz |sed -En 's/(.*)\.([^.]+)$/\2/p'
#过滤掉空行和#开头的行
sed -r '/^(#|$)/d' /etc/httpd/conf/httpd.conf
sed -r '/^#|^$/d' /etc/httpd/conf/httpd.conf
#伪造Apache日志中的指定IP
sed –i 's/192.168.1.3/192.168.1.4/g' /var/log/apache/access.log
sed –i 's/192.168.1.3/192.168.1.4/g' /var/log/apache/error_log
#连接最多的前3个IP
awk -F" +|:" '{print $(NF-2)}' ss.log |sort |uniq -c|sort -nr|head -n3
#关于POST请求
grep 'POST' /var/log/httpd/access_log | awk '{print $1}' | sort | uniq -c | sort -nr
#Content-Length过大的请求,例如过滤Content-Length大于5M的日志
awk '{if($10>5000000){print $0}}' /var/log/httpd/access_log
#/etc/passwd 中用户uid 大于500 的行给打印出来
awk -F ':' '$3 >= 500' 1.txt
#列出所有进程交换空间使用情况
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done
#查看root用户
awk -F: '$3==0{print $1}' /etc/passwd
#查看SSH爆破记录
cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'
#两个文件去重
awk '{print $0}' file1 file2 |sort|uniq
#查看当前系统IP连接数
netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c | sort -rn