The 28-year-old Rahane, who has had a modest series so far, was hit by a ball during Wednesday's practice and sustained an avulsion fracture on his right index finger, the India cricket board said in a media release (www.bcci.tv).
Batsman Manish Pandey has replaced Rahane in the squad, with paceman Shardul Thakur named as a back-up for Shami, who has a sore knee and will be assessed before the start of the penultimate match of the five-Test series.
Seamer Bhuvneshwar Kumar, who took six wickets in his last Test against New Zealand in September, is expected to start if Shami is ruled out, with opening batsman Lokesh Rahul returning to the side after missing the third Test in Mohali with injury.
The hosts lead the series 2-0 and captain Virat Kohli was confident the replacements would do the job for his team.
“Currently, (I'm) not really (worried) because if you see whoever has stepped in has given match-winning performances,” Kohli told reporters on Wednesday.
“You speak about Bhuvi, he has come in at St Lucia once and in Kolkata once, and both times he has picked up five wickets and he has been the match winner for us.
“I am not worried because the guys sitting outside are waiting for opportunities.”
After losses in the second and third Tests, the touring England side travelled to Dubai to unwind during the eight-day gap between the third and fourth Test.
At the end of the five-Test series, England will head home for Christmas before returning to India in January to play three one-day internationals and the same number of Twenty20 matches.
Kohli said the break had also been refreshing for his side but added that he would like it to be reciprocated when they tour England next.
“We didn't ask for the gap, it was part of the schedule,” said the 28-year-old. “Make sure when we go there we also have eight days' gap after the three tests and (a) 25-day gap between ODIs and Tests.”
Original source: India’s Rahane out of the series